summaryrefslogtreecommitdiffstats
path: root/bsps/powerpc
diff options
context:
space:
mode:
Diffstat (limited to 'bsps/powerpc')
-rw-r--r--bsps/powerpc/beatnik/start/bspstart.c6
-rw-r--r--bsps/powerpc/gen5200/include/bsp.h4
-rw-r--r--bsps/powerpc/gen5200/start/bspstart.c4
-rw-r--r--bsps/powerpc/gen5200/start/linkcmds.gen5200_base7
-rw-r--r--bsps/powerpc/gen83xx/include/bsp.h4
-rw-r--r--bsps/powerpc/gen83xx/start/start.S9
-rw-r--r--bsps/powerpc/haleakala/start/bspstart.c7
-rw-r--r--bsps/powerpc/haleakala/start/dlentry.S4
-rw-r--r--bsps/powerpc/haleakala/start/linkcmds16
-rw-r--r--bsps/powerpc/motorola_powerpc/start/bspstart.c2
-rw-r--r--bsps/powerpc/mpc55xxevb/start/start.S10
-rw-r--r--bsps/powerpc/mpc8260ads/start/bspstart.c8
-rw-r--r--bsps/powerpc/mpc8260ads/start/linkcmds11
-rw-r--r--bsps/powerpc/mvme3100/start/bspstart.c2
-rw-r--r--bsps/powerpc/mvme5500/start/bspstart.c2
-rw-r--r--bsps/powerpc/psim/start/start.S10
-rw-r--r--bsps/powerpc/qemuppc/start/bspstart.c6
-rw-r--r--bsps/powerpc/qemuppc/start/start.S16
-rw-r--r--bsps/powerpc/qoriq/start/start.S18
-rw-r--r--bsps/powerpc/shared/start/linkcmds.base1
-rw-r--r--bsps/powerpc/ss555/start/bspstart.c7
-rw-r--r--bsps/powerpc/ss555/start/linkcmds16
-rw-r--r--bsps/powerpc/ss555/start/start.S2
-rw-r--r--bsps/powerpc/t32mppc/start/start.S8
-rw-r--r--bsps/powerpc/tqm8xx/include/bsp.h4
-rw-r--r--bsps/powerpc/tqm8xx/start/bspstart.c10
-rw-r--r--bsps/powerpc/tqm8xx/start/start.S13
-rw-r--r--bsps/powerpc/virtex4/start/bspstart.c7
-rw-r--r--bsps/powerpc/virtex4/start/linkcmds11
-rw-r--r--bsps/powerpc/virtex4/start/start.S4
-rw-r--r--bsps/powerpc/virtex5/start/bspstart.c7
-rw-r--r--bsps/powerpc/virtex5/start/linkcmds11
-rw-r--r--bsps/powerpc/virtex5/start/start.S4
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