diff options
Diffstat (limited to 'bsps/powerpc')
33 files changed, 45 insertions, 206 deletions
diff --git a/bsps/powerpc/beatnik/start/bspstart.c b/bsps/powerpc/beatnik/start/bspstart.c index 83c6d2efa6..91913cd0ed 100644 --- a/bsps/powerpc/beatnik/start/bspstart.c +++ b/bsps/powerpc/beatnik/start/bspstart.c @@ -177,8 +177,8 @@ void bsp_start( void ) { unsigned char *stack; char *chpt; - uint32_t intrStackStart; - uint32_t intrStackSize; + uintptr_t intrStackStart; + uintptr_t intrStackSize; Triv121PgTbl pt=0; @@ -239,7 +239,7 @@ void bsp_start( void ) * This could be done latter (e.g in IRQ_INIT) but it helps to understand * some settings below... */ - intrStackStart = (uint32_t)__rtems_end; + intrStackStart = (uintptr_t)_Configuration_Interrupt_stack_area_begin; intrStackSize = rtems_configuration_get_interrupt_stack_size(); /* diff --git a/bsps/powerpc/gen5200/include/bsp.h b/bsps/powerpc/gen5200/include/bsp.h index 40ac1116c5..015a8b1f3b 100644 --- a/bsps/powerpc/gen5200/include/bsp.h +++ b/bsps/powerpc/gen5200/include/bsp.h @@ -55,10 +55,6 @@ LINKER_SYMBOL(bsp_section_bss_start); LINKER_SYMBOL(bsp_section_bss_end); LINKER_SYMBOL(bsp_section_bss_size); -LINKER_SYMBOL(bsp_interrupt_stack_start); -LINKER_SYMBOL(bsp_interrupt_stack_end); -LINKER_SYMBOL(bsp_interrupt_stack_size); - LINKER_SYMBOL(bsp_work_area_start); LINKER_SYMBOL(MBAR); diff --git a/bsps/powerpc/gen5200/start/bspstart.c b/bsps/powerpc/gen5200/start/bspstart.c index 8b1558ce7b..0f981ffee0 100644 --- a/bsps/powerpc/gen5200/start/bspstart.c +++ b/bsps/powerpc/gen5200/start/bspstart.c @@ -154,8 +154,8 @@ void bsp_start(void) /* Initialize exception handler */ ppc_exc_cache_wb_check = 0; ppc_exc_initialize( - (uintptr_t) bsp_interrupt_stack_start, - (uintptr_t) bsp_interrupt_stack_size + (uintptr_t) _Configuration_Interrupt_stack_area_begin, + rtems_configuration_get_interrupt_stack_size() ); ppc_exc_set_handler(ASM_ALIGN_VECTOR, ppc_exc_alignment_handler); diff --git a/bsps/powerpc/gen5200/start/linkcmds.gen5200_base b/bsps/powerpc/gen5200/start/linkcmds.gen5200_base index a8841d2586..5ab30882ce 100644 --- a/bsps/powerpc/gen5200/start/linkcmds.gen5200_base +++ b/bsps/powerpc/gen5200/start/linkcmds.gen5200_base @@ -288,13 +288,6 @@ SECTIONS { bsp_section_data_size = bsp_section_data_end - bsp_section_data_start; bsp_section_bss_size = bsp_section_bss_end - bsp_section_bss_start; - /* - * BSP: Interrupt stack - */ - bsp_interrupt_stack_start = bsp_section_bss_end; - bsp_interrupt_stack_end = bsp_interrupt_stack_start + 32k; - bsp_interrupt_stack_size = bsp_interrupt_stack_end - bsp_interrupt_stack_start; - .rtemsstack (NOLOAD) : { *(SORT(.rtemsstack.*)) } > RAM diff --git a/bsps/powerpc/gen83xx/include/bsp.h b/bsps/powerpc/gen83xx/include/bsp.h index 59fd20de54..682dfc2986 100644 --- a/bsps/powerpc/gen83xx/include/bsp.h +++ b/bsps/powerpc/gen83xx/include/bsp.h @@ -53,10 +53,6 @@ LINKER_SYMBOL(bsp_section_bss_start); LINKER_SYMBOL(bsp_section_bss_end); LINKER_SYMBOL(bsp_section_bss_size); -LINKER_SYMBOL(bsp_interrupt_stack_start); -LINKER_SYMBOL(bsp_interrupt_stack_end); -LINKER_SYMBOL(bsp_interrupt_stack_size); - LINKER_SYMBOL(bsp_work_area_start); LINKER_SYMBOL(IMMRBAR); diff --git a/bsps/powerpc/gen83xx/start/start.S b/bsps/powerpc/gen83xx/start/start.S index b48a26b7c3..9272702d6b 100644 --- a/bsps/powerpc/gen83xx/start/start.S +++ b/bsps/powerpc/gen83xx/start/start.S @@ -417,7 +417,7 @@ start_code_in_ram: li r3, 0 /* Set start stack pointer */ - LA r1, start_stack_end + LA r1, _Configuration_Interrupt_stack_area_end stwu r3, -4(r1) stwu r3, -4(r1) @@ -520,10 +520,3 @@ mpc83xx_zero_4_tail: /* Return */ blr - -.section ".bsp_rwextra", "aw", @nobits - - /* Start stack area */ -.align 4 -.space 4096 -start_stack_end: diff --git a/bsps/powerpc/haleakala/start/bspstart.c b/bsps/powerpc/haleakala/start/bspstart.c index 5f7f5efb95..986582955a 100644 --- a/bsps/powerpc/haleakala/start/bspstart.c +++ b/bsps/powerpc/haleakala/start/bspstart.c @@ -66,9 +66,6 @@ #include <ppc4xx/ppc405ex.h> #include <stdio.h> - -LINKER_SYMBOL(intrStack_start); -LINKER_SYMBOL(intrStack_size); /* * Driver configuration parameters */ @@ -188,8 +185,8 @@ void bsp_start( void ) * Initialize default raw exception handlers. */ ppc_exc_initialize( - (uintptr_t) intrStack_start, - (uintptr_t) intrStack_size + (uintptr_t) _Configuration_Interrupt_stack_area_begin, + rtems_configuration_get_interrupt_stack_size() ); /* diff --git a/bsps/powerpc/haleakala/start/dlentry.S b/bsps/powerpc/haleakala/start/dlentry.S index 2395d89886..54fbb7668b 100644 --- a/bsps/powerpc/haleakala/start/dlentry.S +++ b/bsps/powerpc/haleakala/start/dlentry.S @@ -54,7 +54,7 @@ * .bss * see linker command file for section placement * - * The initial stack is set to stack.end + * The initial stack is set to _Configuration_Interrupt_stack_area_end. * * All the entry veneer has to do is to clear the BSS. */ @@ -98,7 +98,7 @@ sbss_length: sbss_addr: .long sbss.start stack_top: - .long stack.end + .long _Configuration_Interrupt_stack_area_end PUBLIC_VAR (text_addr) text_addr: .long text.start diff --git a/bsps/powerpc/haleakala/start/linkcmds b/bsps/powerpc/haleakala/start/linkcmds index 98fea7f990..3bccc97c38 100644 --- a/bsps/powerpc/haleakala/start/linkcmds +++ b/bsps/powerpc/haleakala/start/linkcmds @@ -14,9 +14,6 @@ OUTPUT_ARCH(powerpc) ENTRY(download_entry) EXTERN(__vectors) -kIntrStackSize = 16K; -kMainStackSize = 64K; - RamBase = DEFINED(RamBase) ? RamBase : 0; RamSize = DEFINED(RamSize) ? RamSize : 256M; HeapSize = DEFINED(HeapSize) ? HeapSize : 0x0; @@ -246,19 +243,6 @@ SECTIONS bss.size = bss.end - bss.start; sbss.size = sbss.end - sbss.start; - - /* Interrupt stack: align to a cache-line boundary */ - IntrStack_start = ALIGN(0x20); - . += kIntrStackSize; - intrStack = .; - PROVIDE(intrStackPtr = intrStack); - PROVIDE(intrStack_start = IntrStack_start); - PROVIDE(intrStack_size = kIntrStackSize); - - /* Main stack: align to a cache-line boundary */ - stack.start = ALIGN(0x20); - . += kMainStackSize; - stack.end = .; .rtemsstack (NOLOAD) : { *(SORT(.rtemsstack.*)) diff --git a/bsps/powerpc/motorola_powerpc/start/bspstart.c b/bsps/powerpc/motorola_powerpc/start/bspstart.c index 7fb684c759..c420f6c19b 100644 --- a/bsps/powerpc/motorola_powerpc/start/bspstart.c +++ b/bsps/powerpc/motorola_powerpc/start/bspstart.c @@ -220,7 +220,7 @@ void bsp_start( void ) /* * Initialize the interrupt related settings. */ - intrStackStart = (uintptr_t) __rtems_end; + intrStackStart = (uintptr_t)_Configuration_Interrupt_stack_area_begin; intrStackSize = rtems_configuration_get_interrupt_stack_size(); /* diff --git a/bsps/powerpc/mpc55xxevb/start/start.S b/bsps/powerpc/mpc55xxevb/start/start.S index 0a757e7ada..81893b6276 100644 --- a/bsps/powerpc/mpc55xxevb/start/start.S +++ b/bsps/powerpc/mpc55xxevb/start/start.S @@ -228,7 +228,7 @@ zero_intermediate_stack_loop: bl mpc55xx_start_early /* Initialize start stack */ - LA r1, start_stack_end + LA r1, _Configuration_Interrupt_stack_area_end subi r1, r1, 16 li r0, 0 stw r0, 0(r1) @@ -289,11 +289,3 @@ mpc55xx_start_load_section: cmpw cr7, r3, r4 beqlr cr7 b memcpy - - /* Start stack area */ - - .section ".bsp_rwextra", "aw", @nobits - .align 4 - .space 4096 - -start_stack_end: diff --git a/bsps/powerpc/mpc8260ads/start/bspstart.c b/bsps/powerpc/mpc8260ads/start/bspstart.c index 6f1cc72a2c..503d96b8a1 100644 --- a/bsps/powerpc/mpc8260ads/start/bspstart.c +++ b/bsps/powerpc/mpc8260ads/start/bspstart.c @@ -69,9 +69,6 @@ bool bsp_serial_xon_xoff; bool bsp_serial_cts_rts; uint32_t bsp_serial_rate; -extern char IntrStack_start []; -extern char intrStack []; - static void _BSP_GPLED0_on(void) { BCSR *csr; @@ -142,10 +139,9 @@ void bsp_start(void) */ /* Initialize exception handler */ - /* FIXME: Interrupt stack begin and size */ ppc_exc_initialize( - (uintptr_t) IntrStack_start, - (uintptr_t) intrStack - (uintptr_t) IntrStack_start + (uintptr_t) _Configuration_Interrupt_stack_area_begin, + rtems_configuration_get_interrupt_stack_size() ); /* Initalize interrupt support */ diff --git a/bsps/powerpc/mpc8260ads/start/linkcmds b/bsps/powerpc/mpc8260ads/start/linkcmds index 34fb69149b..84933b48e9 100644 --- a/bsps/powerpc/mpc8260ads/start/linkcmds +++ b/bsps/powerpc/mpc8260ads/start/linkcmds @@ -17,7 +17,6 @@ EXTERN(__vectors) * number used there is not constant. If this happens to you, edit * the lines marked XXX below to use a constant value. */ -StackSize = DEFINED(StackSize) ? StackSize : 0x8000; RamBase = DEFINED(RamBase) ? RamBase : 0x0; RamSize = DEFINED(RamSize) ? RamDiskSize : 0x0800000; /* 8M program ram */ HeapSize = DEFINED(HeapSize) ? HeapSize : 0x0; @@ -289,16 +288,6 @@ SECTIONS _startmalloc = .; } >ram - - /* - * Interrupt stack setup - */ - IntrStack_start = ALIGN(0x10); - . += 0x4000; - intrStack = .; - PROVIDE(intrStackPtr = intrStack); - - clear_end = .; .rtemsstack (NOLOAD) : { diff --git a/bsps/powerpc/mvme3100/start/bspstart.c b/bsps/powerpc/mvme3100/start/bspstart.c index a073baa784..6f15b2d7a3 100644 --- a/bsps/powerpc/mvme3100/start/bspstart.c +++ b/bsps/powerpc/mvme3100/start/bspstart.c @@ -255,7 +255,7 @@ VpdBufRec vpdData [] = { /* * Initialize the interrupt related settings. */ - intrStackStart = (uintptr_t) __rtems_end; + intrStackStart = (uintptr_t) _Configuration_Interrupt_stack_area_begin; intrStackSize = rtems_configuration_get_interrupt_stack_size(); /* diff --git a/bsps/powerpc/mvme5500/start/bspstart.c b/bsps/powerpc/mvme5500/start/bspstart.c index fc7057613a..47d413bc91 100644 --- a/bsps/powerpc/mvme5500/start/bspstart.c +++ b/bsps/powerpc/mvme5500/start/bspstart.c @@ -225,7 +225,7 @@ void bsp_start( void ) /* * Initialize the interrupt related settings. */ - intrStackStart = (uintptr_t) __rtems_end; + intrStackStart = (uintptr_t) _Configuration_Interrupt_stack_area_begin; intrStackSize = rtems_configuration_get_interrupt_stack_size(); /* diff --git a/bsps/powerpc/psim/start/start.S b/bsps/powerpc/psim/start/start.S index 918321af5f..03cbdedc5b 100644 --- a/bsps/powerpc/psim/start/start.S +++ b/bsps/powerpc/psim/start/start.S @@ -47,7 +47,7 @@ FUNC_NAME(__atexit): /* tell C's eabi-ctor's we have an atexit function */ .long bsp_section_bss_end .Lstack = .-.LCTOC1 /* stack address if set by user */ - .long __stack + .long _Configuration_Interrupt_stack_area_end .text .Lptr: @@ -89,7 +89,7 @@ _start: .Ldone: - lwz r0,.Lstack(r5) /* stack address or 0 */ + lwz r0,.Lstack(r5) /* stack area or 0 */ cmplwi 1,r0,0 /* equal to 0? */ bc 12,6,.Lnostack /* use default stack if == 0 */ mr sp,r0 /* use user defined stack */ @@ -133,9 +133,3 @@ FUNC_NAME(bsp_reset): .Lstart: .size _start,.Lstart-_start - - /* Start stack area */ -.section ".bsp_rwextra", "aw", @nobits -.align 4 -.space 4096 -__stack: diff --git a/bsps/powerpc/qemuppc/start/bspstart.c b/bsps/powerpc/qemuppc/start/bspstart.c index 15cf9d4207..de3bba0797 100644 --- a/bsps/powerpc/qemuppc/start/bspstart.c +++ b/bsps/powerpc/qemuppc/start/bspstart.c @@ -42,8 +42,6 @@ uint32_t bsp_clicks_per_usec; * Memory on this board. */ extern char RamSize[]; -extern char bsp_interrupt_stack_start[]; -extern char bsp_interrupt_stack_end[]; uint32_t BSP_mem_size = (uint32_t)RamSize; /* Default decrementer exception handler */ @@ -89,8 +87,8 @@ void bsp_start( void ) /* * Initialize the interrupt related settings. */ - intrStackStart = (uintptr_t) bsp_interrupt_stack_start; - intrStackSize = (uintptr_t) bsp_interrupt_stack_end - intrStackStart; + intrStackStart = (uintptr_t) _Configuration_Interrupt_stack_area_begin; + intrStackSize = rtems_configuration_get_interrupt_stack_size(); BSP_mem_size = (uint32_t )RamSize; diff --git a/bsps/powerpc/qemuppc/start/start.S b/bsps/powerpc/qemuppc/start/start.S index 1ef7a3a02a..66cedca9a2 100644 --- a/bsps/powerpc/qemuppc/start/start.S +++ b/bsps/powerpc/qemuppc/start/start.S @@ -1,17 +1,13 @@ #include <rtems/score/cpu.h> #include <rtems/powerpc/powerpc.h> -#include <bspopts.h> - - .global bsp_interrupt_stack_start - .global bsp_interrupt_stack_end .global _start .section .bsp_start_text,"awx",@progbits _start: - lis %r1,bsp_interrupt_stack_start@h - ori %r1,%r1,bsp_interrupt_stack_start@l + lis %r1,_Configuration_Interrupt_stack_area_end@h + ori %r1,%r1,_Configuration_Interrupt_stack_area_end@l /* Make sure stack is properly aligned */ li %r3, CPU_STACK_ALIGNMENT - 1 andc %r1, %r1, %r3 @@ -42,11 +38,3 @@ __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: diff --git a/bsps/powerpc/qoriq/start/start.S b/bsps/powerpc/qoriq/start/start.S index 02505a6262..96e00bf38b 100644 --- a/bsps/powerpc/qoriq/start/start.S +++ b/bsps/powerpc/qoriq/start/start.S @@ -55,7 +55,9 @@ _start: bl .Linitearly /* Get start stack */ - LA START_STACK, start_stack_end + LA START_STACK, _Configuration_Interrupt_stack_area_begin + LA r3, _Configuration_Interrupt_stack_size + add START_STACK, START_STACK, r3 bl .Linitmore @@ -226,12 +228,10 @@ _start: isync /* - * Initialize start stack. Make sure that we do not share a cache line - * with the heap block management, since initial stacks for the - * secondary processors are allocated from the workspace. + * Initialize start stack. The stacks are statically allocated and + * properly aligned. */ - subi r1, START_STACK, 2 * PPC_DEFAULT_CACHE_LINE_SIZE - clrrwi r1, r1, PPC_DEFAULT_CACHE_LINE_POWER + subi r1, START_STACK, PPC_DEFAULT_CACHE_LINE_SIZE li r0, 0 PPC_REG_STORE r0, 0(r1) @@ -540,9 +540,3 @@ bsp_exc_vector_base: /* Symbol provided for debugging and tracing */ bsp_exc_vector_end: - - /* Start stack area */ - .section ".bsp_rwextra", "aw", @nobits - .align 4 - .space 4096 -start_stack_end: diff --git a/bsps/powerpc/shared/start/linkcmds.base b/bsps/powerpc/shared/start/linkcmds.base index fa49edf7dd..4ad302e86b 100644 --- a/bsps/powerpc/shared/start/linkcmds.base +++ b/bsps/powerpc/shared/start/linkcmds.base @@ -321,7 +321,6 @@ SECTIONS { .rtemsstack (NOLOAD) : ALIGN_WITH_INPUT { bsp_section_rtemsstack_begin = .; - *(.bsp_rwextra) *(SORT(.rtemsstack.*)) bsp_section_rtemsstack_end = .; } > REGION_RTEMSSTACK AT > REGION_RTEMSSTACK diff --git a/bsps/powerpc/ss555/start/bspstart.c b/bsps/powerpc/ss555/start/bspstart.c index cf54d61d9e..5943e2bbd6 100644 --- a/bsps/powerpc/ss555/start/bspstart.c +++ b/bsps/powerpc/ss555/start/bspstart.c @@ -32,8 +32,6 @@ SPR_RW(SPRG1) -extern unsigned long intrStackPtr; - /* * Driver configuration parameters */ @@ -67,7 +65,7 @@ uint32_t _CPU_Counter_frequency(void) */ void bsp_start(void) { - register unsigned char* intrStack; + char* intrStack; /* * Get CPU identification dynamically. Note that the get_ppc_cpu_type() @@ -80,7 +78,8 @@ void bsp_start(void) /* * Initialize some SPRG registers related to irq handling */ - intrStack = (((unsigned char*)&intrStackPtr) - PPC_MINIMUM_STACK_FRAME_SIZE); + intrStack = (char *)_Configuration_Interrupt_stack_area_end - + PPC_MINIMUM_STACK_FRAME_SIZE; _write_SPRG1((unsigned int)intrStack); /* diff --git a/bsps/powerpc/ss555/start/linkcmds b/bsps/powerpc/ss555/start/linkcmds index 079dc84924..f3a41dd3a9 100644 --- a/bsps/powerpc/ss555/start/linkcmds +++ b/bsps/powerpc/ss555/start/linkcmds @@ -232,22 +232,6 @@ SECTIONS PROVIDE(_end = bss.end); - /* - * Initialization stack - */ - InitStack_start = ALIGN(0x10); - . += 0x1000; - initStack = .; - PROVIDE(initStackPtr = initStack); - - /* - * Interrupt stack - */ - IntrStack_start = ALIGN(0x10); - . += 0x4000; - intrStack = .; - PROVIDE(intrStackPtr = intrStack); - .rtemsstack (NOLOAD) : { *(SORT(.rtemsstack.*)) } diff --git a/bsps/powerpc/ss555/start/start.S b/bsps/powerpc/ss555/start/start.S index 6a8ef85afc..f17c918b3e 100644 --- a/bsps/powerpc/ss555/start/start.S +++ b/bsps/powerpc/ss555/start/start.S @@ -220,7 +220,7 @@ base_addr: * Parameters from linker */ stack_top: - .long initStackPtr + .long _Configuration_Interrupt_stack_area_end toc_pointer: .long __GOT_START__ diff --git a/bsps/powerpc/t32mppc/start/start.S b/bsps/powerpc/t32mppc/start/start.S index 7c32343f3d..e4066adb6f 100644 --- a/bsps/powerpc/t32mppc/start/start.S +++ b/bsps/powerpc/t32mppc/start/start.S @@ -34,7 +34,7 @@ _start: mtspr HID0, r0 /* Initialize start stack */ - LWI r1, start_stack_end + LA r1, _Configuration_Interrupt_stack_area_end subi r1, r1, 16 li r0, 0 stw r0, 0(r1) @@ -195,9 +195,3 @@ bsp_exc_vector_base: PPC_REG_STORE r3, GPR3_OFFSET(r1) li r3, 35 b ppc_exc_fatal_normal - - /* Start stack area */ - .section ".bsp_rwextra", "aw", @nobits - .align 4 - .space 4096 -start_stack_end: diff --git a/bsps/powerpc/tqm8xx/include/bsp.h b/bsps/powerpc/tqm8xx/include/bsp.h index 5c8eae81b4..8e84ee883e 100644 --- a/bsps/powerpc/tqm8xx/include/bsp.h +++ b/bsps/powerpc/tqm8xx/include/bsp.h @@ -53,10 +53,6 @@ LINKER_SYMBOL( bsp_section_bss_start); LINKER_SYMBOL( bsp_section_bss_end); LINKER_SYMBOL( bsp_section_bss_size); -LINKER_SYMBOL( bsp_interrupt_stack_start); -LINKER_SYMBOL( bsp_interrupt_stack_end); -LINKER_SYMBOL( bsp_interrupt_stack_size); - LINKER_SYMBOL( bsp_work_area_start); #ifndef ASM diff --git a/bsps/powerpc/tqm8xx/start/bspstart.c b/bsps/powerpc/tqm8xx/start/bspstart.c index b2d765c9c4..2d0b8e3c7e 100644 --- a/bsps/powerpc/tqm8xx/start/bspstart.c +++ b/bsps/powerpc/tqm8xx/start/bspstart.c @@ -99,11 +99,6 @@ uint32_t _CPU_Counter_frequency(void) void bsp_start( void) { - - uintptr_t interrupt_stack_start = (uintptr_t) bsp_interrupt_stack_start; - uintptr_t interrupt_stack_size = (uintptr_t) bsp_interrupt_stack_end - - interrupt_stack_start; - /* * Get CPU identification dynamically. Note that the get_ppc_cpu_type() * function stores the result in global variables so that it can be used @@ -149,7 +144,10 @@ void bsp_start( void) bsp_clicks_per_usec = bsp_time_base_frequency / 1000000; /* Initialize exception handler */ - ppc_exc_initialize(interrupt_stack_start, interrupt_stack_size); + ppc_exc_initialize( + (uintptr_t) _Configuration_Interrupt_stack_area_begin, + rtems_configuration_get_interrupt_stack_size() + ); /* Initalize interrupt support */ bsp_interrupt_initialize(); diff --git a/bsps/powerpc/tqm8xx/start/start.S b/bsps/powerpc/tqm8xx/start/start.S index 92bda3fd6d..b16b92e1e2 100644 --- a/bsps/powerpc/tqm8xx/start/start.S +++ b/bsps/powerpc/tqm8xx/start/start.S @@ -26,8 +26,6 @@ .extern boot_card PUBLIC_VAR (_start) -PUBLIC_VAR (bsp_interrupt_stack_start) -PUBLIC_VAR (bsp_interrupt_stack_end) .section ".bsp_start_text", "ax" _start: @@ -119,8 +117,8 @@ start_code_in_ram: */ /* Set stack pointer (common for RAM/ROM startup) */ - LA r1, bsp_section_text_begin - addi r1, r1, -0x10 /* Set up stack pointer = beginning of text section - 0x10 */ + LA r1, _Configuration_Interrupt_stack_area_end + addi r1, r1, -0x10 /* Create NULL */ li r0, 0 @@ -285,10 +283,3 @@ mpc8xx_zero_4_tail: blr end_reloc_startup: - - /* Interrupt stack */ - .section ".bsp_rwextra", "aw", @nobits - .align 4 -bsp_interrupt_stack_start: - .space 32768 -bsp_interrupt_stack_end: diff --git a/bsps/powerpc/virtex4/start/bspstart.c b/bsps/powerpc/virtex4/start/bspstart.c index 40cd710a58..93890c1623 100644 --- a/bsps/powerpc/virtex4/start/bspstart.c +++ b/bsps/powerpc/virtex4/start/bspstart.c @@ -85,9 +85,6 @@ LINKER_SYMBOL(RamSize); LINKER_SYMBOL(__bsp_ram_start); LINKER_SYMBOL(__bsp_ram_end); LINKER_SYMBOL(__rtems_end); -LINKER_SYMBOL(_stack); -LINKER_SYMBOL(StackSize); -LINKER_SYMBOL(__stack_base); LINKER_SYMBOL(WorkAreaBase); LINKER_SYMBOL(MsgAreaBase); LINKER_SYMBOL(MsgAreaSize); @@ -174,7 +171,7 @@ void bsp_start(void) /* * Initialize the interrupt related settings. */ - intrStackStart = CPU_UP_ALIGN((uint32_t)__bsp_ram_start); + intrStackStart = (uintptr_t) _Configuration_Interrupt_stack_area_begin; intrStackSize = rtems_configuration_get_interrupt_stack_size(); ppc_exc_initialize(intrStackStart, intrStackSize); @@ -184,14 +181,12 @@ void bsp_start(void) "RAM: %p %p\n" "RTEMS: %p\n" "Interrupt Stack: 0x%08x 0x%x\n" - "Stack: %p %p %p\n" "Workspace: %p %p\n" "MsgArea: %p %p\n" "Physical RAM %p\n", RamBase, RamSize, __rtems_end, intrStackStart, intrStackSize, - __stack_base, _stack, StackSize, WorkAreaBase, __bsp_ram_end, MsgAreaBase, MsgAreaSize, __phy_ram_end); diff --git a/bsps/powerpc/virtex4/start/linkcmds b/bsps/powerpc/virtex4/start/linkcmds index 472c797fd2..66705168ef 100644 --- a/bsps/powerpc/virtex4/start/linkcmds +++ b/bsps/powerpc/virtex4/start/linkcmds @@ -15,8 +15,6 @@ EXTERN(__vectors) MsgAreaSize = DEFINED(MsgAreaSize) ? MsgAreaSize : 1M; RamBase = DEFINED(RamBase) ? RamBase : 0x0; RamSize = DEFINED(RamSize) ? RamSize : 128M - MsgAreaSize; -IntrStackSize = DEFINED(IntrStackSize) ? IntrStackSize : 16K; -StackSize = DEFINED(StackSize) ? StackSize : 64K; HeapSize = DEFINED(HeapSize) ? HeapSize : 0; /* 0=Use def */ @@ -251,15 +249,6 @@ SECTIONS . = ALIGN(0x10); /* Align to a cache-line boundary */ PROVIDE(__bsp_ram_start = .); - /* Interrupt stack: aligned on a cache-line boundary */ - . += IntrStackSize; - __intrStack = .; - - /* Main stack lives here */ - _stack = ALIGN(0x10); /* Align to a cache-line boundary */ - . += StackSize; - __stack_base = .; /* Initial stack builds downwards */ - .rtemsstack (NOLOAD) : { *(SORT(.rtemsstack.*)) } >RAM diff --git a/bsps/powerpc/virtex4/start/start.S b/bsps/powerpc/virtex4/start/start.S index 21948409bf..d4b8419551 100644 --- a/bsps/powerpc/virtex4/start/start.S +++ b/bsps/powerpc/virtex4/start/start.S @@ -82,7 +82,7 @@ * .bss * see linker command file for section placement * - * The initial stack is set to __stack_base. + * The initial stack is set to _Configuration_Interrupt_stack_area_end. * */ @@ -109,7 +109,7 @@ bss_length: bss_addr: .long __bss_start stack_top: - .long __stack_base + .long _Configuration_Interrupt_stack_area_end dccr_contents: .long __dccr iccr_contents: diff --git a/bsps/powerpc/virtex5/start/bspstart.c b/bsps/powerpc/virtex5/start/bspstart.c index 6457143d20..8297b164b6 100644 --- a/bsps/powerpc/virtex5/start/bspstart.c +++ b/bsps/powerpc/virtex5/start/bspstart.c @@ -86,9 +86,6 @@ LINKER_SYMBOL(RamSize); LINKER_SYMBOL(__bsp_ram_start); LINKER_SYMBOL(__bsp_ram_end); LINKER_SYMBOL(__rtems_end); -LINKER_SYMBOL(_stack); -LINKER_SYMBOL(StackSize); -LINKER_SYMBOL(__stack_base); LINKER_SYMBOL(WorkAreaBase); LINKER_SYMBOL(MsgAreaBase); LINKER_SYMBOL(MsgAreaSize); @@ -193,7 +190,7 @@ void bsp_start(void) /* * Initialize the interrupt related settings. */ - intrStackStart = CPU_UP_ALIGN((uint32_t)__bsp_ram_start); + intrStackStart = (uintptr_t)_Configuration_Interrupt_stack_area_begin; intrStackSize = rtems_configuration_get_interrupt_stack_size(); ppc_exc_initialize(intrStackStart, intrStackSize); @@ -203,14 +200,12 @@ void bsp_start(void) "RAM: %p %p\n" "RTEMS: %p\n" "Interrupt Stack: 0x%08x 0x%x\n" - "Stack: %p %p %p\n" "Workspace: %p %p\n" "MsgArea: %p %p\n" "Physical RAM %p\n", RamBase, RamSize, __rtems_end, intrStackStart, intrStackSize, - __stack_base, _stack, StackSize, WorkAreaBase, __bsp_ram_end, MsgAreaBase, MsgAreaSize, __phy_ram_end); diff --git a/bsps/powerpc/virtex5/start/linkcmds b/bsps/powerpc/virtex5/start/linkcmds index 4fd5243f3f..0cb4b4e752 100644 --- a/bsps/powerpc/virtex5/start/linkcmds +++ b/bsps/powerpc/virtex5/start/linkcmds @@ -15,8 +15,6 @@ EXTERN(__vectors) MsgAreaSize = DEFINED(MsgAreaSize) ? MsgAreaSize : 1M; RamBase = DEFINED(RamBase) ? RamBase : 0x0; RamSize = DEFINED(RamSize) ? RamSize : 2048M - MsgAreaSize; -IntrStackSize = DEFINED(IntrStackSize) ? IntrStackSize : 16K; -StackSize = DEFINED(StackSize) ? StackSize : 64K; HeapSize = DEFINED(HeapSize) ? HeapSize : 0; /* 0=Use def */ @@ -251,15 +249,6 @@ SECTIONS . = ALIGN(0x20); /* Align to a cache-line boundary */ PROVIDE(__bsp_ram_start = .); - /* Interrupt stack: aligned on a cache-line boundary */ - . += IntrStackSize; - __intrStack = .; - - /* Main stack lives here */ - _stack = ALIGN(0x20); /* Align to a cache-line boundary */ - . += StackSize; - __stack_base = .; /* Initial stack builds downwards */ - .rtemsstack (NOLOAD) : { *(SORT(.rtemsstack.*)) } >RAM diff --git a/bsps/powerpc/virtex5/start/start.S b/bsps/powerpc/virtex5/start/start.S index 2b12c18c89..b63c103b14 100644 --- a/bsps/powerpc/virtex5/start/start.S +++ b/bsps/powerpc/virtex5/start/start.S @@ -86,7 +86,7 @@ * .bss * see linker command file for section placement * - * The initial stack is set to __stack_base + * The initial stack is set to _Configuration_Interrupt_stack_area_end. * * All the entry veneer has to do is to clear the BSS. */ @@ -114,7 +114,7 @@ bss_length: bss_addr: .long __bss_start stack_top: - .long __stack_base + .long _Configuration_Interrupt_stack_area_end .eject |