mirror of
https://gitlab.rtems.org/rtems/rtos/rtems.git
synced 2026-11-09 08:37:58 +08:00
1 parent
9860cc7bba
commit
2e5cf7fb53
4 files changed
+42
-225
No files matched your search
@@ -3,13 +3,15 @@
|
||||
|
||||
#include <bspopts.h>
|
||||
|
||||
#.section ".text"
|
||||
.section .entry_point_section,"awx",@progbits
|
||||
.global _start
|
||||
.global bsp_interrupt_stack_start
|
||||
.global bsp_interrupt_stack_end
|
||||
.global _start
|
||||
|
||||
.section .bsp_start_text,"awx",@progbits
|
||||
|
||||
_start:
|
||||
lis %r1,_stack@h
|
||||
ori %r1,%r1,_stack@l
|
||||
lis %r1,bsp_interrupt_stack_start@h
|
||||
ori %r1,%r1,bsp_interrupt_stack_start@l
|
||||
/* Make sure stack is properly aligned */
|
||||
li %r3, CPU_STACK_ALIGNMENT - 1
|
||||
andc %r1, %r1, %r3
|
||||
@@ -40,3 +42,11 @@ __eabi:
|
||||
_reset:
|
||||
b _start
|
||||
.size _reset, . - _reset
|
||||
|
||||
/* Start stack area */
|
||||
.section ".bsp_rwextra", "aw", @nobits
|
||||
.align 4
|
||||
.space 4096
|
||||
bsp_interrupt_stack_start:
|
||||
.space 32768
|
||||
bsp_interrupt_stack_end:
|
||||
@@ -44,7 +44,6 @@ uint32_t bsp_clicks_per_usec;
|
||||
extern char RamSize[];
|
||||
extern char bsp_interrupt_stack_start[];
|
||||
extern char bsp_interrupt_stack_end[];
|
||||
extern char bsp_interrupt_stack_size[];
|
||||
uint32_t BSP_mem_size = (uint32_t)RamSize;
|
||||
|
||||
/* Default decrementer exception handler */
|
||||
@@ -87,7 +86,7 @@ void bsp_start( void )
|
||||
* Initialize the interrupt related settings.
|
||||
*/
|
||||
intrStackStart = (uintptr_t) bsp_interrupt_stack_start;
|
||||
intrStackSize = (uintptr_t) bsp_interrupt_stack_size;
|
||||
intrStackSize = (uintptr_t) bsp_interrupt_stack_end - intrStackStart;
|
||||
|
||||
BSP_mem_size = (uint32_t )RamSize;
|
||||
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
#include <bsp/bootcard.h>
|
||||
#include <bsp/linker-symbols.h>
|
||||
|
||||
static void
|
||||
__outb(int port, unsigned char v)
|
||||
@@ -30,13 +31,6 @@ __bzero (unsigned char *d, int len)
|
||||
*d++ = 0;
|
||||
}
|
||||
|
||||
extern unsigned char __sdata2_load[], __sdata2_start[], __sdata2_end[];
|
||||
extern unsigned char __data_load[], __data_start[], __data_end[];
|
||||
extern unsigned char __sdata_load[], __sdata_start[], __sdata_end[];
|
||||
extern unsigned char __sbss2_start[], __sbss2_end[];
|
||||
extern unsigned char __sbss_start[], __sbss_end[];
|
||||
extern unsigned char __bss_start[], __bss_end[];
|
||||
|
||||
|
||||
/*
|
||||
* Prototype this here because it is just the entry symbol and
|
||||
@@ -49,12 +43,9 @@ void cmain (void)
|
||||
/*
|
||||
* init variable sections
|
||||
*/
|
||||
__memcpy (__sdata2_start, __sdata2_load, __sdata2_end - __sdata2_start);
|
||||
__memcpy (__sdata_start , __sdata_load , __sdata_end - __sdata_start);
|
||||
__memcpy (__data_start , __data_load , __data_end - __data_start);
|
||||
__bzero (__sbss2_start , __sbss2_end - __sbss2_start);
|
||||
__bzero (__sbss_start , __sbss_end - __sbss_start);
|
||||
__bzero (__bss_start , __bss_end - __bss_start);
|
||||
__memcpy (bsp_section_data_begin, bsp_section_data_load_begin, (int)bsp_section_data_size);
|
||||
__bzero (bsp_section_bss_begin, (int)bsp_section_bss_size);
|
||||
__bzero (bsp_section_sbss_begin, (int)bsp_section_sbss_size);
|
||||
/* printk( "start of BSP\n"); */
|
||||
boot_card(0);
|
||||
/* printk( "end of BSP\n"); */
|
||||
|
||||
File diff suppressed because it is too large.
Load diff
Reference in new issue
Block a user