Changeset 511dc4b in rtems
- Timestamp:
- 06/19/18 07:09:51 (5 years ago)
- Branches:
- 5, master
- Children:
- 9e3bb45
- Parents:
- 715d616
- git-author:
- Sebastian Huber <sebastian.huber@…> (06/19/18 07:09:51)
- git-committer:
- Sebastian Huber <sebastian.huber@…> (06/27/18 06:58:16)
- Files:
-
- 4 deleted
- 161 edited
- 1 moved
Legend:
- Unmodified
- Added
- Removed
-
bsps/arm/csb336/start/start.S
r715d616 r511dc4b 9 9 */ 10 10 11 #include <bsp/linker-symbols.h> 12 13 /* Some standard definitions...*/ 14 .equ PSR_MODE_USR, 0x10 15 .equ PSR_MODE_FIQ, 0x11 16 .equ PSR_MODE_IRQ, 0x12 17 .equ PSR_MODE_SVC, 0x13 18 .equ PSR_MODE_ABT, 0x17 19 .equ PSR_MODE_UNDEF, 0x1B 20 .equ PSR_MODE_SYS, 0x1F 21 22 .equ PSR_I, 0x80 23 .equ PSR_F, 0x40 24 .equ PSR_T, 0x20 11 #include <rtems/asm.h> 12 #include <rtems/score/cpu.h> 25 13 26 14 .section .bsp_start_text,"ax" … … 37 25 * Since I don't plan to return to the bootloader, 38 26 * I don't have to save the registers. 39 *40 * I'll just set the CPSR for SVC mode, interrupts41 * off, and ARM instructions.42 27 */ 43 mov r0, #(PSR_MODE_SVC | PSR_I | PSR_F) 28 29 /* Set end of interrupt stack area */ 30 ldr r7, =_Configuration_Interrupt_stack_area_end 31 32 /* Enter FIQ mode and set up the FIQ stack pointer */ 33 mov r0, #(ARM_PSR_M_FIQ | ARM_PSR_I | ARM_PSR_F) 44 34 msr cpsr, r0 35 ldr r1, =bsp_stack_fiq_size 36 mov sp, r7 37 sub r7, r7, r1 38 39 /* Enter ABT mode and set up the ABT stack pointer */ 40 mov r0, #(ARM_PSR_M_ABT | ARM_PSR_I | ARM_PSR_F) 41 msr cpsr, r0 42 ldr r1, =bsp_stack_abt_size 43 mov sp, r7 44 sub r7, r7, r1 45 46 /* Enter UND mode and set up the UND stack pointer */ 47 mov r0, #(ARM_PSR_M_UND | ARM_PSR_I | ARM_PSR_F) 48 msr cpsr, r0 49 ldr r1, =bsp_stack_und_size 50 mov sp, r7 51 sub r7, r7, r1 52 53 /* Enter IRQ mode and set up the IRQ stack pointer */ 54 mov r0, #(ARM_PSR_M_IRQ | ARM_PSR_I | ARM_PSR_F) 55 msr cpsr, r0 56 mov sp, r7 57 58 /* 59 * Enter SVC mode and set up the SVC stack pointer, reuse IRQ stack 60 * (interrupts are disabled). 61 */ 62 mov r0, #(ARM_PSR_M_SVC | ARM_PSR_I | ARM_PSR_F) 63 msr cpsr, r0 64 mov sp, r7 65 66 /* Stay in SVC mode */ 45 67 46 68 /* zero the bss */ … … 53 75 strlot r2, [r0], #4 54 76 blo _bss_init /* loop while r0 < r1 */ 55 56 57 /* --- Initialize stack pointer registers */58 /* Enter IRQ mode and set up the IRQ stack pointer */59 mov r0, #(PSR_MODE_IRQ | PSR_I | PSR_F) /* No interrupts */60 msr cpsr, r061 ldr r1, =bsp_stack_irq_size62 ldr sp, =bsp_stack_irq_begin63 add sp, sp, r164 65 /* Enter FIQ mode and set up the FIQ stack pointer */66 mov r0, #(PSR_MODE_FIQ | PSR_I | PSR_F) /* No interrupts */67 msr cpsr, r068 ldr r1, =bsp_stack_fiq_size69 ldr sp, =bsp_stack_fiq_begin70 add sp, sp, r171 72 /* Enter ABT mode and set up the ABT stack pointer */73 mov r0, #(PSR_MODE_ABT | PSR_I | PSR_F) /* No interrupts */74 msr cpsr, r075 ldr r1, =bsp_stack_abt_size76 ldr sp, =bsp_stack_abt_begin77 add sp, sp, r178 79 /* Enter UNDEF mode and set up the UNDEF stack pointer */80 mov r0, #(PSR_MODE_UNDEF | PSR_I | PSR_F) /* No interrupts */81 msr cpsr, r082 ldr r1, =bsp_stack_und_size83 ldr sp, =bsp_stack_und_begin84 add sp, sp, r185 86 /* Set up the SVC stack pointer last and stay in SVC mode */87 mov r0, #(PSR_MODE_SVC | PSR_I | PSR_F) /* No interrupts */88 msr cpsr, r089 ldr r1, =bsp_stack_svc_size90 ldr sp, =bsp_stack_svc_begin91 add sp, sp, r192 sub sp, sp, #0x6493 77 94 78 /* -
bsps/arm/csb337/start/start.S
r715d616 r511dc4b 9 9 */ 10 10 11 #include <bsp/linker-symbols.h> 12 13 /* Some standard definitions...*/ 14 .equ PSR_MODE_USR, 0x10 15 .equ PSR_MODE_FIQ, 0x11 16 .equ PSR_MODE_IRQ, 0x12 17 .equ PSR_MODE_SVC, 0x13 18 .equ PSR_MODE_ABT, 0x17 19 .equ PSR_MODE_UNDEF, 0x1B 20 .equ PSR_MODE_SYS, 0x1F 21 22 .equ PSR_I, 0x80 23 .equ PSR_F, 0x40 24 .equ PSR_T, 0x20 11 #include <rtems/asm.h> 12 #include <rtems/score/cpu.h> 25 13 26 14 .text … … 30 18 * Since I don't plan to return to the bootloader, 31 19 * I don't have to save the registers. 32 *33 * I'll just set the CPSR for SVC mode, interrupts34 * off, and ARM instructions.35 20 */ 36 mov r0, #(PSR_MODE_SVC | PSR_I | PSR_F) 21 22 /* Set end of interrupt stack area */ 23 ldr r7, =_Configuration_Interrupt_stack_area_end 24 25 /* Enter FIQ mode and set up the FIQ stack pointer */ 26 mov r0, #(ARM_PSR_M_FIQ | ARM_PSR_I | ARM_PSR_F) 37 27 msr cpsr, r0 28 ldr r1, =bsp_stack_fiq_size 29 mov sp, r7 30 sub r7, r7, r1 31 32 /* Enter ABT mode and set up the ABT stack pointer */ 33 mov r0, #(ARM_PSR_M_ABT | ARM_PSR_I | ARM_PSR_F) 34 msr cpsr, r0 35 ldr r1, =bsp_stack_abt_size 36 mov sp, r7 37 sub r7, r7, r1 38 39 /* Enter UND mode and set up the UND stack pointer */ 40 mov r0, #(ARM_PSR_M_UND | ARM_PSR_I | ARM_PSR_F) 41 msr cpsr, r0 42 ldr r1, =bsp_stack_und_size 43 mov sp, r7 44 sub r7, r7, r1 45 46 /* Enter IRQ mode and set up the IRQ stack pointer */ 47 mov r0, #(ARM_PSR_M_IRQ | ARM_PSR_I | ARM_PSR_F) 48 msr cpsr, r0 49 mov sp, r7 50 51 /* 52 * Enter SVC mode and set up the SVC stack pointer, reuse IRQ stack 53 * (interrupts are disabled). 54 */ 55 mov r0, #(ARM_PSR_M_SVC | ARM_PSR_I | ARM_PSR_F) 56 msr cpsr, r0 57 mov sp, r7 58 59 /* Stay in SVC mode */ 38 60 39 61 /* zero the bss */ … … 46 68 strlot r2, [r0], #4 47 69 blo _bss_init /* loop while r0 < r1 */ 48 49 50 /* --- Initialize stack pointer registers */51 /* Enter IRQ mode and set up the IRQ stack pointer */52 mov r0, #(PSR_MODE_IRQ | PSR_I | PSR_F) /* No interrupts */53 msr cpsr, r054 ldr r1, =bsp_stack_irq_size55 ldr sp, =bsp_stack_irq_begin56 add sp, sp, r157 58 /* Enter FIQ mode and set up the FIQ stack pointer */59 mov r0, #(PSR_MODE_FIQ | PSR_I | PSR_F) /* No interrupts */60 msr cpsr, r061 ldr r1, =bsp_stack_fiq_size62 ldr sp, =bsp_stack_fiq_begin63 add sp, sp, r164 65 /* Enter ABT mode and set up the ABT stack pointer */66 mov r0, #(PSR_MODE_ABT | PSR_I | PSR_F) /* No interrupts */67 msr cpsr, r068 ldr r1, =bsp_stack_abt_size69 ldr sp, =bsp_stack_abt_begin70 add sp, sp, r171 72 /* Set up the SVC stack pointer last and stay in SVC mode */73 mov r0, #(PSR_MODE_SVC | PSR_I | PSR_F) /* No interrupts */74 msr cpsr, r075 ldr r1, =bsp_stack_svc_size76 ldr sp, =bsp_stack_svc_begin77 add sp, sp, r178 sub sp, sp, #0x6479 70 80 71 /* -
bsps/arm/edb7312/start/start.S
r715d616 r511dc4b 13 13 */ 14 14 15 #include <bsp/linker-symbols.h> 16 17 /* Some standard definitions...*/ 18 19 .equ Mode_USR, 0x10 20 .equ Mode_FIQ, 0x11 21 .equ Mode_IRQ, 0x12 22 .equ Mode_SVC, 0x13 23 .equ Mode_ABT, 0x17 24 .equ Mode_ABORT, 0x17 25 .equ Mode_UNDEF, 0x1B 26 .equ Mode_SYS, 0x1F /*only available on ARM Arch. v4*/ 27 28 .equ I_Bit, 0x80 29 .equ F_Bit, 0x40 15 #include <rtems/asm.h> 16 #include <rtems/score/cpu.h> 30 17 31 18 .section ".bsp_start_text", "ax" … … 73 60 .globl _start 74 61 _start: 75 /* store the sp */ 76 mov r12, sp 62 /* Set end of interrupt stack area */ 63 ldr r7, =_Configuration_Interrupt_stack_area_end 64 65 /* Enter FIQ mode and set up the FIQ stack pointer */ 66 mov r0, #(ARM_PSR_M_FIQ | ARM_PSR_I | ARM_PSR_F) 67 msr cpsr, r0 68 ldr r1, =bsp_stack_fiq_size 69 mov sp, r7 70 sub r7, r7, r1 71 72 /* Enter ABT mode and set up the ABT stack pointer */ 73 mov r0, #(ARM_PSR_M_ABT | ARM_PSR_I | ARM_PSR_F) 74 msr cpsr, r0 75 ldr r1, =bsp_stack_abt_size 76 mov sp, r7 77 sub r7, r7, r1 78 79 /* Enter UND mode and set up the UND stack pointer */ 80 mov r0, #(ARM_PSR_M_UND | ARM_PSR_I | ARM_PSR_F) 81 msr cpsr, r0 82 ldr r1, =bsp_stack_und_size 83 mov sp, r7 84 sub r7, r7, r1 85 86 /* Enter IRQ mode and set up the IRQ stack pointer */ 87 mov r0, #(ARM_PSR_M_IRQ | ARM_PSR_I | ARM_PSR_F) 88 msr cpsr, r0 89 mov sp, r7 90 91 /* 92 * Enter SVC mode and set up the SVC stack pointer, reuse IRQ stack 93 * (interrupts are disabled). 94 */ 95 mov r0, #(ARM_PSR_M_SVC | ARM_PSR_I | ARM_PSR_F) 96 msr cpsr, r0 97 mov sp, r7 98 99 /* Stay in SVC mode */ 77 100 /* 78 101 * Here is the code to initialize the low-level BSP environment … … 90 113 BLO zi_init 91 114 92 /* --- Initialise stack pointer registers */93 94 /* Enter IRQ mode and set up the IRQ stack pointer */95 MOV r0, #Mode_IRQ | I_Bit | F_Bit /* No interrupts */96 MSR cpsr, r097 ldr r1, =bsp_stack_irq_size98 LDR sp, =bsp_stack_irq_begin99 add sp, sp, r1100 sub sp, sp, #0x64101 102 /* Enter FIQ mode and set up the FIQ stack pointer */103 MOV r0, #Mode_FIQ | I_Bit | F_Bit /* No interrupts */104 MSR cpsr, r0105 ldr r1, =bsp_stack_fiq_size106 LDR sp, =bsp_stack_fiq_begin107 add sp, sp, r1108 sub sp, sp, #0x64109 110 /* Enter ABT mode and set up the ABT stack pointer */111 MOV r0, #Mode_ABT | I_Bit | F_Bit /* No interrupts */112 MSR cpsr, r0113 ldr r1, =bsp_stack_abt_size114 LDR sp, =bsp_stack_abt_begin115 add sp, sp, r1116 sub sp, sp, #0x64117 118 /* Set up the SVC stack pointer last and stay in SVC mode */119 MOV r0, #Mode_SVC | I_Bit | F_Bit /* No interrupts */120 MSR cpsr, r0121 ldr r1, =bsp_stack_svc_size122 LDR sp, =bsp_stack_svc_begin123 add sp, sp, r1124 sub sp, sp, #0x64125 126 /* save the original registers */127 stmdb sp!, {r4-r12, lr}128 129 115 /* --- Now we enter the C code */ 130 116 131 117 mov r0, #0 132 118 bl boot_card 133 134 ldmia sp!, {r4-r12, lr}135 mov sp, r12136 mov pc, lr -
bsps/arm/gumstix/start/start.S
r715d616 r511dc4b 8 8 */ 9 9 10 #include <bsp/linker-symbols.h> 11 12 /* Some standard definitions...*/ 13 .equ PSR_MODE_USR, 0x10 14 .equ PSR_MODE_FIQ, 0x11 15 .equ PSR_MODE_IRQ, 0x12 16 .equ PSR_MODE_SVC, 0x13 17 .equ PSR_MODE_ABT, 0x17 18 .equ PSR_MODE_UNDEF, 0x1B 19 .equ PSR_MODE_SYS, 0x1F 20 21 .equ PSR_I, 0x80 22 .equ PSR_F, 0x40 23 .equ PSR_T, 0x20 10 #include <rtems/asm.h> 11 #include <rtems/score/cpu.h> 24 12 25 13 .text … … 29 17 * Since I don't plan to return to the bootloader, 30 18 * I don't have to save the registers. 31 *32 * I'll just set the CPSR for SVC mode, interrupts33 * off, and ARM instructions.34 19 */ 35 mov r0, #(PSR_MODE_SVC | PSR_I | PSR_F) 20 21 /* Set end of interrupt stack area */ 22 ldr r7, =_Configuration_Interrupt_stack_area_end 23 24 /* Enter FIQ mode and set up the FIQ stack pointer */ 25 mov r0, #(ARM_PSR_M_FIQ | ARM_PSR_I | ARM_PSR_F) 36 26 msr cpsr, r0 27 ldr r1, =bsp_stack_fiq_size 28 mov sp, r7 29 sub r7, r7, r1 37 30 31 /* Enter ABT mode and set up the ABT stack pointer */ 32 mov r0, #(ARM_PSR_M_ABT | ARM_PSR_I | ARM_PSR_F) 33 msr cpsr, r0 34 ldr r1, =bsp_stack_abt_size 35 mov sp, r7 36 sub r7, r7, r1 37 38 /* Enter UND mode and set up the UND stack pointer */ 39 mov r0, #(ARM_PSR_M_UND | ARM_PSR_I | ARM_PSR_F) 40 msr cpsr, r0 41 ldr r1, =bsp_stack_und_size 42 mov sp, r7 43 sub r7, r7, r1 44 45 /* Enter IRQ mode and set up the IRQ stack pointer */ 46 mov r0, #(ARM_PSR_M_IRQ | ARM_PSR_I | ARM_PSR_F) 47 msr cpsr, r0 48 mov sp, r7 49 50 /* 51 * Enter SVC mode and set up the SVC stack pointer, reuse IRQ stack 52 * (interrupts are disabled). 53 */ 54 mov r0, #(ARM_PSR_M_SVC | ARM_PSR_I | ARM_PSR_F) 55 msr cpsr, r0 56 mov sp, r7 57 58 /* Stay in SVC mode */ 38 59 39 60 /* zero the bss */ … … 46 67 strlot r2, [r0], #4 47 68 blo _bss_init /* loop while r0 < r1 */ 48 49 /* --- Initialize stack pointer registers */50 /* Enter IRQ mode and set up the IRQ stack pointer */51 mov r0, #(PSR_MODE_IRQ | PSR_I | PSR_F) /* No interrupts */52 msr cpsr, r053 ldr r1, =bsp_stack_irq_size54 ldr sp, =bsp_stack_irq_begin55 add sp, sp, r156 57 /* Enter FIQ mode and set up the FIQ stack pointer */58 mov r0, #(PSR_MODE_FIQ | PSR_I | PSR_F) /* No interrupts */59 msr cpsr, r060 ldr r1, =bsp_stack_fiq_size61 ldr sp, =bsp_stack_fiq_begin62 add sp, sp, r163 64 /* Enter ABT mode and set up the ABT stack pointer */65 mov r0, #(PSR_MODE_ABT | PSR_I | PSR_F) /* No interrupts */66 msr cpsr, r067 ldr r1, =bsp_stack_abt_size68 ldr sp, =bsp_stack_abt_begin69 add sp, sp, r170 71 /* Set up the SVC stack pointer last and stay in SVC mode */72 mov r0, #(PSR_MODE_SVC | PSR_I | PSR_F) /* No interrupts */73 msr cpsr, r074 ldr r1, =bsp_stack_und_size75 ldr sp, =bsp_stack_und_begin76 add sp, sp, r177 sub sp, sp, #0x6478 69 79 70 /* -
bsps/arm/imx/start/linkcmds.imx7
r715d616 r511dc4b 23 23 REGION_ALIAS ("REGION_NOCACHE_LOAD", NOCACHE); 24 24 25 bsp_processor_count = DEFINED (bsp_processor_count) ? bsp_processor_count : 2;26 27 bsp_stack_irq_size = DEFINED (bsp_stack_irq_size) ? bsp_stack_irq_size : 4096;28 25 bsp_stack_abt_size = DEFINED (bsp_stack_abt_size) ? bsp_stack_abt_size : 1024; 29 26 -
bsps/arm/include/bsp/linker-symbols.h
r715d616 r511dc4b 44 44 #endif 45 45 46 LINKER_SYMBOL(bsp_stack_irq_begin) 47 LINKER_SYMBOL(bsp_stack_irq_end) 48 LINKER_SYMBOL(bsp_stack_irq_size) 49 50 LINKER_SYMBOL(bsp_stack_fiq_begin) 51 LINKER_SYMBOL(bsp_stack_fiq_end) 52 LINKER_SYMBOL(bsp_stack_irq_size) 53 54 LINKER_SYMBOL(bsp_stack_abt_begin) 55 LINKER_SYMBOL(bsp_stack_abt_end) 46 LINKER_SYMBOL(bsp_stack_fiq_size) 56 47 LINKER_SYMBOL(bsp_stack_abt_size) 57 58 LINKER_SYMBOL(bsp_stack_und_begin)59 LINKER_SYMBOL(bsp_stack_und_end)60 48 LINKER_SYMBOL(bsp_stack_und_size) 61 62 LINKER_SYMBOL(bsp_stack_hyp_begin)63 LINKER_SYMBOL(bsp_stack_hyp_end)64 49 LINKER_SYMBOL(bsp_stack_hyp_size) 65 66 LINKER_SYMBOL(bsp_stack_svc_begin)67 LINKER_SYMBOL(bsp_stack_svc_end)68 LINKER_SYMBOL(bsp_stack_svc_size)69 50 70 51 LINKER_SYMBOL(bsp_section_start_begin) … … 157 138 __attribute__((section(".bsp_noload_nocache." # subsection))) 158 139 159 LINKER_SYMBOL(bsp_processor_count)160 161 140 /** @} */ 162 141 -
bsps/arm/raspberrypi/start/bspsmp.c
r715d616 r511dc4b 58 58 uint32_t _CPU_SMP_Initialize(void) 59 59 { 60 uint32_t cpu_count = (uint32_t)bsp_processor_count; 61 62 if ( cpu_count > 4 ) 63 cpu_count = 4; 64 65 return cpu_count; 60 return 4; 66 61 } 67 62 -
bsps/arm/raspberrypi/start/linkcmds
r715d616 r511dc4b 42 42 } 43 43 44 bsp_processor_count = DEFINED (bsp_processor_count) ? bsp_processor_count : @RASPBERRYPI_CPUS@;45 46 44 REGION_ALIAS ("REGION_START", RAM); 47 45 REGION_ALIAS ("REGION_VECTOR", VECTOR_RAM); … … 62 60 REGION_ALIAS ("REGION_NOCACHE_LOAD", RAM); 63 61 64 bsp_stack_irq_size = DEFINED (bsp_stack_irq_size) ? bsp_stack_irq_size : 3008;65 62 bsp_stack_abt_size = DEFINED (bsp_stack_abt_size) ? bsp_stack_abt_size : 1024; 66 63 -
bsps/arm/rtl22xx/start/start.S
r715d616 r511dc4b 9 9 */ 10 10 11 #include <bsp/linker-symbols.h> 12 13 /* Some standard definitions...*/ 14 .equ PSR_MODE_USR, 0x10 15 .equ PSR_MODE_FIQ, 0x11 16 .equ PSR_MODE_IRQ, 0x12 17 .equ PSR_MODE_SVC, 0x13 18 .equ PSR_MODE_ABT, 0x17 19 .equ PSR_MODE_UNDEF, 0x1B 20 .equ PSR_MODE_SYS, 0x1F 21 22 .equ PSR_I, 0x80 23 .equ PSR_F, 0x40 24 .equ PSR_T, 0x20 11 #include <rtems/asm.h> 12 #include <rtems/score/cpu.h> 25 13 26 14 .text … … 31 19 * Since I don't plan to return to the bootloader, 32 20 * I don't have to save the registers. 33 *34 * I'll just set the CPSR for SVC mode, interrupts35 * off, and ARM instructions.36 21 */ 37 22 38 /* --- Initialize stack pointer registers */ 39 /* Enter IRQ mode and set up the IRQ stack pointer */ 40 mov r0, #(PSR_MODE_IRQ | PSR_I | PSR_F) /* No interrupts */ 41 bic r0, r0, #PSR_T 42 msr cpsr, r0 43 ldr r1, =bsp_stack_irq_size 44 ldr sp, =bsp_stack_irq_begin 45 add sp, sp, r1 23 /* Set end of interrupt stack area */ 24 ldr r7, =_Configuration_Interrupt_stack_area_end 46 25 47 26 /* Enter FIQ mode and set up the FIQ stack pointer */ 48 mov r0, #(PSR_MODE_FIQ | PSR_I | PSR_F) /* No interrupts */ 49 bic r0, r0, #PSR_T 27 mov r0, #(ARM_PSR_M_FIQ | ARM_PSR_I | ARM_PSR_F) 50 28 msr cpsr, r0 51 29 ldr r1, =bsp_stack_fiq_size 52 ldr sp, =bsp_stack_fiq_begin53 add sp, sp, r130 mov sp, r7 31 sub r7, r7, r1 54 32 55 33 /* Enter ABT mode and set up the ABT stack pointer */ 56 mov r0, #(PSR_MODE_ABT | PSR_I | PSR_F) /* No interrupts */ 57 bic r0, r0, #PSR_T 34 mov r0, #(ARM_PSR_M_ABT | ARM_PSR_I | ARM_PSR_F) 58 35 msr cpsr, r0 59 bic r0, r0, #PSR_T60 36 ldr r1, =bsp_stack_abt_size 61 ldr sp, =bsp_stack_abt_begin62 add sp, sp, r137 mov sp, r7 38 sub r7, r7, r1 63 39 64 /* Set up the SVC stack pointer last and stay in SVC mode */ 65 mov r0, #(PSR_MODE_SVC | PSR_I | PSR_F) /* No interrupts */ 66 bic r0, r0, #PSR_T 40 /* Enter UND mode and set up the UND stack pointer */ 41 mov r0, #(ARM_PSR_M_UND | ARM_PSR_I | ARM_PSR_F) 67 42 msr cpsr, r0 68 ldr r1, =bsp_stack_svc_size 69 ldr sp, =bsp_stack_svc_begin 70 add sp, sp, r1 71 sub sp, sp, #0x64 43 ldr r1, =bsp_stack_und_size 44 mov sp, r7 45 sub r7, r7, r1 46 47 /* Enter IRQ mode and set up the IRQ stack pointer */ 48 mov r0, #(ARM_PSR_M_IRQ | ARM_PSR_I | ARM_PSR_F) 49 msr cpsr, r0 50 mov sp, r7 51 52 /* 53 * Enter SVC mode and set up the SVC stack pointer, reuse IRQ stack 54 * (interrupts are disabled). 55 */ 56 mov r0, #(ARM_PSR_M_SVC | ARM_PSR_I | ARM_PSR_F) 57 msr cpsr, r0 58 mov sp, r7 59 60 /* Stay in SVC mode */ 72 61 73 62 /* -
bsps/arm/shared/start/arm-a9mpcore-smp.c
r715d616 r511dc4b 1 1 /* 2 * Copyright (c) 2013 -2015embedded brains GmbH. All rights reserved.2 * Copyright (c) 2013, 2018 embedded brains GmbH. All rights reserved. 3 3 * 4 4 * embedded brains GmbH … … 20 20 21 21 #include <bsp/irq.h> 22 #include <bsp/linker-symbols.h>23 22 24 23 static void bsp_inter_processor_interrupt(void *arg) … … 29 28 uint32_t _CPU_SMP_Initialize(void) 30 29 { 31 uint32_t hardware_count = arm_gic_irq_processor_count(); 32 uint32_t linker_count = (uint32_t) bsp_processor_count; 33 34 return hardware_count <= linker_count ? hardware_count : linker_count; 30 return arm_gic_irq_processor_count(); 35 31 } 36 32 -
bsps/arm/shared/start/linkcmds.base
r715d616 r511dc4b 46 46 bsp_stack_fiq_size = ALIGN (bsp_stack_fiq_size, bsp_stack_align); 47 47 48 bsp_stack_irq_size = DEFINED (bsp_stack_irq_size) ? bsp_stack_irq_size : 0;49 bsp_stack_irq_size = ALIGN (bsp_stack_irq_size, bsp_stack_align);50 51 bsp_stack_svc_size = DEFINED (bsp_stack_svc_size) ? bsp_stack_svc_size : 0;52 bsp_stack_svc_size = ALIGN (bsp_stack_svc_size, bsp_stack_align);53 54 48 bsp_stack_und_size = DEFINED (bsp_stack_und_size) ? bsp_stack_und_size : 0; 55 49 bsp_stack_und_size = ALIGN (bsp_stack_und_size, bsp_stack_align); … … 57 51 bsp_stack_hyp_size = DEFINED (bsp_stack_hyp_size) ? bsp_stack_hyp_size : 0; 58 52 bsp_stack_hyp_size = ALIGN (bsp_stack_hyp_size, bsp_stack_align); 59 60 bsp_stack_main_size = DEFINED (bsp_stack_main_size) ? bsp_stack_main_size : 0;61 bsp_stack_main_size = ALIGN (bsp_stack_main_size, bsp_stack_align);62 63 bsp_stack_all_size = bsp_stack_abt_size + bsp_stack_fiq_size + bsp_stack_irq_size + bsp_stack_svc_size + bsp_stack_und_size + bsp_stack_hyp_size + bsp_stack_main_size;64 65 bsp_processor_count = DEFINED (bsp_processor_count) ? bsp_processor_count : 1;66 53 67 54 MEMORY { … … 298 285 .vector : ALIGN_WITH_INPUT { 299 286 bsp_section_vector_begin = .; 300 301 287 . = . + DEFINED (bsp_vector_table_in_start_section) ? 0 : bsp_vector_table_size; 302 303 . = ALIGN (bsp_stack_align);304 305 bsp_stack_irq_begin = .;306 . = . + bsp_stack_irq_size;307 bsp_stack_irq_end = .;308 309 bsp_stack_svc_begin = .;310 . = . + bsp_stack_svc_size;311 bsp_stack_svc_end = .;312 313 bsp_stack_fiq_begin = .;314 . = . + bsp_stack_fiq_size;315 bsp_stack_fiq_end = .;316 317 bsp_stack_und_begin = .;318 . = . + bsp_stack_und_size;319 bsp_stack_und_end = .;320 321 bsp_stack_hyp_begin = .;322 . = . + bsp_stack_hyp_size;323 bsp_stack_hyp_end = .;324 325 bsp_stack_abt_begin = .;326 . = . + bsp_stack_abt_size;327 bsp_stack_abt_end = .;328 329 bsp_stack_main_begin = .;330 . = . + bsp_stack_main_size;331 bsp_stack_main_end = .;332 333 bsp_stack_secondary_processors_begin = .;334 . = . + (bsp_processor_count - 1) * bsp_stack_all_size;335 bsp_stack_secondary_processors_end = .;336 337 *(.bsp_vector)338 288 } > REGION_VECTOR AT > REGION_VECTOR 339 289 .rtemsstack (NOLOAD) : { -
bsps/arm/shared/start/start.S
r715d616 r511dc4b 6 6 7 7 /* 8 * Copyright (c) 2008, 201 6embedded brains GmbH. All rights reserved.8 * Copyright (c) 2008, 2018 embedded brains GmbH. All rights reserved. 9 9 * 10 10 * embedded brains GmbH … … 20 20 21 21 #include <rtems/asm.h> 22 #include <rtems/system.h>23 22 #include <rtems/score/percpu.h> 24 23 25 24 #include <bspopts.h> 26 25 #include <bsp/irq.h> 27 #include <bsp/linker-symbols.h>28 29 /* External symbols */30 .extern bsp_reset31 .extern boot_card32 .extern bsp_start_hook_033 .extern bsp_start_hook_134 .extern bsp_stack_irq_end35 .extern bsp_stack_fiq_end36 .extern bsp_stack_abt_end37 .extern bsp_stack_und_end38 .extern bsp_stack_svc_end39 #ifdef RTEMS_SMP40 .extern bsp_stack_all_size41 #endif42 .extern _ARMV4_Exception_undef_default43 .extern _ARMV4_Exception_swi_default44 .extern _ARMV4_Exception_data_abort_default45 .extern _ARMV4_Exception_pref_abort_default46 .extern _ARMV4_Exception_reserved_default47 .extern _ARMV4_Exception_interrupt48 .extern _ARMV4_Exception_fiq_default49 .extern _ARMV7M_Exception_default50 51 #ifdef BSP_START_NEEDS_REGISTER_INITIALIZATION52 .extern bsp_start_init_registers_core53 .extern bsp_start_init_registers_banked_fiq54 .extern bsp_start_init_registers_vfp55 #endif56 57 #ifdef BSP_START_IN_HYP_SUPPORT58 .extern bsp_start_arm_drop_hyp_mode59 .globl bsp_start_hyp_vector_table_begin60 #endif61 26 62 27 /* Global symbols */ … … 66 31 .globl bsp_start_vector_table_size 67 32 .globl bsp_vector_table_size 33 34 .section ".bsp_start_text", "ax" 35 36 #if defined(ARM_MULTILIB_ARCH_V4) 37 68 38 .globl bsp_start_hook_0_done 69 39 70 .section ".bsp_start_text", "ax" 71 72 # if defined(ARM_MULTILIB_ARCH_V4)40 #ifdef BSP_START_IN_HYP_SUPPORT 41 .globl bsp_start_hyp_vector_table_begin 42 #endif 73 43 74 44 .arm … … 209 179 mcr p15, 0, r1, c13, c0, 4 210 180 211 /* Calculate stack offset */ 212 ldr r1, =bsp_stack_all_size 213 mul r1, r7 214 #endif 215 216 mrs r4, cpsr /* save original procesor status value */ 181 #endif 182 183 /* Calculate interrupt stack area end for current processor */ 184 ldr r1, =_Configuration_Interrupt_stack_size 185 #ifdef RTEMS_SMP 186 add r7, #1 187 mul r1, r1, r7 188 #endif 189 ldr r2, =_Configuration_Interrupt_stack_area_begin 190 add r7, r1, r2 191 192 /* Save original CPSR value */ 193 mrs r4, cpsr 194 217 195 #ifdef BSP_START_IN_HYP_SUPPORT 218 196 orr r0, r4, #(ARM_PSR_I | ARM_PSR_F) … … 223 201 bne bsp_start_skip_hyp_svc_switch 224 202 225 /* Boot loader stats kernel in HYP mode, switch to SVC necessary */ 226 ldr sp, =bsp_stack_hyp_end 227 #ifdef RTEMS_SMP 228 add sp, r1 229 #endif 203 /* Boot loader starts kernel in HYP mode, switch to SVC necessary */ 204 ldr r1, =bsp_stack_hyp_size 205 mov sp, r7 206 sub r7, r7, r1 230 207 bl bsp_start_arm_drop_hyp_mode 231 208 232 209 bsp_start_skip_hyp_svc_switch: 233 210 #endif 234 /* 235 * Set SVC mode, disable interrupts and enable ARM instructions. 236 */237 mov r0, #(ARM_PSR_M_ SVC| ARM_PSR_I | ARM_PSR_F)211 /* Initialize stack pointer registers for the various modes */ 212 213 /* Enter FIQ mode and set up the FIQ stack pointer */ 214 mov r0, #(ARM_PSR_M_FIQ | ARM_PSR_I | ARM_PSR_F) 238 215 msr cpsr, r0 239 240 /* Initialize stack pointer registers for the various modes */ 216 ldr r1, =bsp_stack_fiq_size 217 mov sp, r7 218 sub r7, r7, r1 219 220 #ifdef BSP_START_NEEDS_REGISTER_INITIALIZATION 221 bl bsp_start_init_registers_banked_fiq 222 #endif 223 224 /* Enter ABT mode and set up the ABT stack pointer */ 225 mov r0, #(ARM_PSR_M_ABT | ARM_PSR_I | ARM_PSR_F) 226 msr cpsr, r0 227 ldr r1, =bsp_stack_abt_size 228 mov sp, r7 229 sub r7, r7, r1 230 231 /* Enter UND mode and set up the UND stack pointer */ 232 mov r0, #(ARM_PSR_M_UND | ARM_PSR_I | ARM_PSR_F) 233 msr cpsr, r0 234 ldr r1, =bsp_stack_und_size 235 mov sp, r7 236 sub r7, r7, r1 241 237 242 238 /* Enter IRQ mode and set up the IRQ stack pointer */ 243 239 mov r0, #(ARM_PSR_M_IRQ | ARM_PSR_I | ARM_PSR_F) 244 240 msr cpsr, r0 245 ldr sp, =bsp_stack_irq_end 246 #ifdef RTEMS_SMP 247 add sp, r1 248 #endif 249 250 /* Enter FIQ mode and set up the FIQ stack pointer */ 251 mov r0, #(ARM_PSR_M_FIQ | ARM_PSR_I | ARM_PSR_F) 252 msr cpsr, r0 253 ldr sp, =bsp_stack_fiq_end 254 #ifdef RTEMS_SMP 255 add sp, r1 256 #endif 257 258 #ifdef BSP_START_NEEDS_REGISTER_INITIALIZATION 259 bl bsp_start_init_registers_banked_fiq 260 #endif 261 262 /* Enter ABT mode and set up the ABT stack pointer */ 263 mov r0, #(ARM_PSR_M_ABT | ARM_PSR_I | ARM_PSR_F) 264 msr cpsr, r0 265 ldr sp, =bsp_stack_abt_end 266 #ifdef RTEMS_SMP 267 add sp, r1 268 #endif 269 270 /* Enter UND mode and set up the UND stack pointer */ 271 mov r0, #(ARM_PSR_M_UND | ARM_PSR_I | ARM_PSR_F) 272 msr cpsr, r0 273 ldr sp, =bsp_stack_und_end 274 #ifdef RTEMS_SMP 275 add sp, r1 276 #endif 277 278 /* Enter SVC mode and set up the SVC stack pointer */ 241 mov sp, r7 242 243 /* 244 * Enter SVC mode and set up the SVC stack pointer, reuse IRQ stack 245 * (interrupts are disabled). 246 */ 279 247 mov r0, #(ARM_PSR_M_SVC | ARM_PSR_I | ARM_PSR_F) 280 248 msr cpsr, r0 281 ldr sp, =bsp_stack_svc_end 282 #ifdef RTEMS_SMP 283 add sp, r1 284 #endif 249 mov sp, r7 285 250 286 251 /* Stay in SVC mode */ … … 334 299 SWITCH_FROM_ARM_TO_THUMB r0 335 300 336 mov r0, r4 /* original cpsrvalue */301 mov r0, r4 /* original CPSR value */ 337 302 mov r1, r5 /* machine type number or ~0 for DT boot */ 338 303 mov r2, r6 /* physical address of ATAGs or DTB */ … … 386 351 .syntax unified 387 352 388 .extern bsp_stack_main_end389 390 353 .thumb 391 354 392 355 bsp_start_vector_table_begin: 393 356 394 .word bsp_stack_main_end357 .word _Configuration_Interrupt_stack_area_end 395 358 .word _start /* Reset */ 396 359 .word _ARMV7M_Exception_default /* NMI */ … … 442 405 #endif /* ARM_MULTILIB_VFP */ 443 406 444 ldr sp, = bsp_stack_main_end407 ldr sp, =_Configuration_Interrupt_stack_area_end 445 408 ldr lr, =bsp_start_hook_0_done + 1 446 409 b bsp_start_hook_0 -
bsps/arm/smdk2410/start/start.S
r715d616 r511dc4b 9 9 */ 10 10 11 #include <bsp/linker-symbols.h> 12 13 /* Some standard definitions...*/ 14 .equ PSR_MODE_USR, 0x10 15 .equ PSR_MODE_FIQ, 0x11 16 .equ PSR_MODE_IRQ, 0x12 17 .equ PSR_MODE_SVC, 0x13 18 .equ PSR_MODE_ABT, 0x17 19 .equ PSR_MODE_UNDEF, 0x1B 20 .equ PSR_MODE_SYS, 0x1F 21 22 .equ PSR_I, 0x80 23 .equ PSR_F, 0x40 24 .equ PSR_T, 0x20 11 #include <rtems/asm.h> 12 #include <rtems/score/cpu.h> 25 13 26 14 .text … … 66 54 * Since I don't plan to return to the bootloader, 67 55 * I don't have to save the registers. 68 *69 * I'll just set the CPSR for SVC mode, interrupts70 * off, and ARM instructions.71 56 */ 72 mov r0, #(PSR_MODE_SVC | PSR_I | PSR_F)73 msr cpsr, r074 57 75 /* --- Initialize stack pointer registers */ 76 /* Enter IRQ mode and set up the IRQ stack pointer */ 77 mov r0, #(PSR_MODE_IRQ | PSR_I | PSR_F) /* No interrupts */ 78 msr cpsr, r0 79 ldr r1, =bsp_stack_irq_size 80 ldr sp, =bsp_stack_irq_begin 81 add sp, sp, r1 58 /* Set end of interrupt stack area */ 59 ldr r7, =_Configuration_Interrupt_stack_area_end 82 60 83 61 /* Enter FIQ mode and set up the FIQ stack pointer */ 84 mov r0, #( PSR_MODE_FIQ | PSR_I | PSR_F) /* No interrupts */62 mov r0, #(ARM_PSR_M_FIQ | ARM_PSR_I | ARM_PSR_F) 85 63 msr cpsr, r0 86 64 ldr r1, =bsp_stack_fiq_size 87 ldr sp, =bsp_stack_fiq_begin88 add sp, sp, r165 mov sp, r7 66 sub r7, r7, r1 89 67 90 68 /* Enter ABT mode and set up the ABT stack pointer */ 91 mov r0, #( PSR_MODE_ABT | PSR_I | PSR_F) /* No interrupts */69 mov r0, #(ARM_PSR_M_ABT | ARM_PSR_I | ARM_PSR_F) 92 70 msr cpsr, r0 93 71 ldr r1, =bsp_stack_abt_size 94 ldr sp, =bsp_stack_abt_begin95 add sp, sp, r172 mov sp, r7 73 sub r7, r7, r1 96 74 97 /* Set up the SVC stack pointer last and stay in SVC mode*/98 mov r0, #( PSR_MODE_SVC | PSR_I | PSR_F) /* No interrupts */75 /* Enter UND mode and set up the UND stack pointer */ 76 mov r0, #(ARM_PSR_M_UND | ARM_PSR_I | ARM_PSR_F) 99 77 msr cpsr, r0 100 ldr r1, =bsp_stack_svc_size 101 ldr sp, =bsp_stack_svc_begin 102 add sp, sp, r1 103 sub sp, sp, #0x64 78 ldr r1, =bsp_stack_und_size 79 mov sp, r7 80 sub r7, r7, r1 104 81 82 /* Enter IRQ mode and set up the IRQ stack pointer */ 83 mov r0, #(ARM_PSR_M_IRQ | ARM_PSR_I | ARM_PSR_F) 84 msr cpsr, r0 85 mov sp, r7 86 87 /* 88 * Enter SVC mode and set up the SVC stack pointer, reuse IRQ stack 89 * (interrupts are disabled). 90 */ 91 mov r0, #(ARM_PSR_M_SVC | ARM_PSR_I | ARM_PSR_F) 92 msr cpsr, r0 93 mov sp, r7 94 95 /* Stay in SVC mode */ 105 96 106 97 /* disable mmu, I and D caches*/ -
bsps/arm/xilinx-zynq/start/linkcmds.in
r715d616 r511dc4b 6 6 NOCACHE : ORIGIN = @ZYNQ_RAM_ORIGIN_AVAILABLE@ + @ZYNQ_RAM_LENGTH_AVAILABLE@ - @ZYNQ_RAM_NOCACHE_LENGTH@, LENGTH = @ZYNQ_RAM_NOCACHE_LENGTH@ 7 7 } 8 9 bsp_processor_count = DEFINED (bsp_processor_count) ? bsp_processor_count : @ZYNQ_CPUS@;10 8 11 9 REGION_ALIAS ("REGION_START", RAM); … … 27 25 REGION_ALIAS ("REGION_NOCACHE_LOAD", NOCACHE); 28 26 29 bsp_stack_irq_size = DEFINED (bsp_stack_irq_size) ? bsp_stack_irq_size : 4096;30 27 bsp_stack_abt_size = DEFINED (bsp_stack_abt_size) ? bsp_stack_abt_size : 1024; 31 28 -
bsps/bfin/TLL6527M/start/linkcmds
r715d616 r511dc4b 12 12 _RamSize = DEFINED(_RamSize) ? _RamSize : 0x04000000; 13 13 _HeapSize = DEFINED(_HeapSize) ? _HeapSize : 0x10000; 14 _StackSize = DEFINED(_StackSize) ? _StackSize : 0x10000;15 14 16 15 MEMORY … … 124 123 *(COMMON) 125 124 . = ALIGN (64); 126 _stack_init = .;127 . += _StackSize;128 125 _clear_end = .; 129 126 _end = .; … … 171 168 .debug_typenames 0 : { *(.debug_typenames) } 172 169 .debug_varnames 0 : { *(.debug_varnames) } 173 /*.stack 0x80000 : { _stack = .; *(.stack) }*/174 170 /* These must appear regardless of . */ 175 171 } -
bsps/bfin/bf537Stamp/start/linkcmds
r715d616 r511dc4b 16 16 _RamSize = DEFINED(_RamSize) ? _RamSize : 0x03400000; 17 17 _HeapSize = DEFINED(_HeapSize) ? _HeapSize : 0x0; 18 _StackSize = DEFINED(_StackSize) ? _StackSize : 0x1000;19 18 20 19 MEMORY … … 132 131 *(COMMON) 133 132 . = ALIGN (64); 134 _stack_init = .;135 . += _StackSize;136 133 _clear_end = .; 137 134 _end = .; … … 179 176 .debug_typenames 0 : { *(.debug_typenames) } 180 177 .debug_varnames 0 : { *(.debug_varnames) } 181 /*.stack 0x80000 : { _stack = .; *(.stack) }*/182 178 /* These must appear regardless of . */ 183 179 } -
bsps/bfin/eZKit533/start/linkcmds
r715d616 r511dc4b 12 12 _RamSize = DEFINED(_RamSize) ? _RamSize : 0x01000000; 13 13 _HeapSize = DEFINED(_HeapSize) ? _HeapSize : 0x0; 14 _StackSize = DEFINED(_StackSize) ? _StackSize : 0x1000;15 14 16 15 MEMORY … … 121 120 *(COMMON) 122 121 . = ALIGN (64); 123 _stack_init = .;124 . += _StackSize;125 122 _clear_end = .; 126 123 _end = .; … … 168 165 .debug_typenames 0 : { *(.debug_typenames) } 169 166 .debug_varnames 0 : { *(.debug_varnames) } 170 /*.stack 0x80000 : { _stack = .; *(.stack) }*/171 167 /* These must appear regardless of . */ 172 168 } -
bsps/lm32/lm32_evr/start/linkcmds
r715d616 r511dc4b 13 13 RamSize = DEFINED(RamSize) ? RamSize : 32M; 14 14 HeapSize = DEFINED(HeapSize) ? HeapSize : 2M; 15 _StackSize = DEFINED(_StackSize) ? _StackSize : 0x2000; 16 17 PROVIDE (__stack = 0); 15 18 16 MEMORY { 19 17 ebr : ORIGIN = 0x04000000 , LENGTH = 32k … … 250 248 PROVIDE (end = .); 251 249 252 . += _StackSize;253 _fstack = .;254 255 250 . = ALIGN (16); 256 _stack_init = .;257 251 _clear_end = .; 258 252 -
bsps/lm32/milkymist/start/linkcmds
r715d616 r511dc4b 13 13 RamSize = DEFINED(RamSize) ? RamSize : 128M; 14 14 HeapSize = DEFINED(HeapSize) ? HeapSize : 92M; 15 _StackSize = DEFINED(_StackSize) ? _StackSize : 0x2000; 16 17 PROVIDE (__stack = 0); 15 18 16 MEMORY { 19 17 sdram : ORIGIN = 0x40000000 , LENGTH = 128M … … 249 247 PROVIDE (end = .); 250 248 251 . += _StackSize;252 _fstack = .;253 254 249 . = ALIGN (16); 255 _stack_init = .;256 250 _clear_end = .; 257 251 } > sdram -
bsps/lm32/shared/start/start.S
r715d616 r511dc4b 127 127 nop 128 128 /* Initialize stack pointer */ 129 mvhi sp, hi(_ fstack-4)130 ori sp, sp, lo(_ fstack-4)129 mvhi sp, hi(_Configuration_Interrupt_stack_area_end-4) 130 ori sp, sp, lo(_Configuration_Interrupt_stack_area_end-4) 131 131 /* Initialize global pointer */ 132 132 mvhi gp, hi(_edata) -
bsps/m32c/m32cbsp/start/linkcmds
r715d616 r511dc4b 5 5 _RamSize = DEFINED(_RamSize) ? _RamSize : 0x800000; 6 6 _HeapSize = DEFINED(_HeapSize) ? _HeapSize : 0x0; 7 _StackSize = DEFINED(_StackSize) ? _StackSize : 0x1000;8 9 7 10 8 /* Default linker script, for normal executables */ … … 154 152 } > RAM 155 153 PROVIDE (__bsssize = 0); 156 . = ALIGN(16);157 158 . += _StackSize;159 PROVIDE (__stack = .);160 154 161 155 .rtemsstack (NOLOAD) : { … … 167 161 PROVIDE (_WorkAreaEnd = .); 168 162 PROVIDE (_WorkAreaSize = _WorkAreaEnd - _WorkAreaBase); 169 170 /*171 .stack (0x200000 + 0x800000 - 2) :172 {173 PROVIDE (__stack = .);174 *(.stack)175 }176 */177 163 178 164 .vec : { -
bsps/m32c/m32cbsp/start/start.S
r715d616 r511dc4b 49 49 .LFB2: 50 50 fset U /* User stack */ 51 ldc #__ stack,sp51 ldc #__Configuration_Interrupt_stack_area_end,sp 52 52 53 53 #ifdef A16 -
bsps/m68k/gen68340/start/linkcmds
r715d616 r511dc4b 22 22 RamSize = DEFINED(RamSize) ? RamSize : 4M; 23 23 HeapSize = DEFINED(HeapSize) ? HeapSize : 0x0; 24 _StackSize = DEFINED(_StackSize) ? _StackSize : 0x1000;25 24 26 25 /* … … 187 186 . = ALIGN (16); 188 187 PROVIDE (end = .); 189 190 . += _StackSize;191 . = ALIGN (16);192 _stack_init = .;193 188 _clear_end = .; 194 189 } >ram -
bsps/m68k/gen68340/start/start.S
r715d616 r511dc4b 851 851 bcs.s ZEROLOOP | No, skip 852 852 853 movel #_ stack_init,a7| set master stack pointer853 movel #_Configuration_Interrupt_stack_area_end,a7 | set master stack pointer 854 854 movel d0,a7@- | command line 855 855 jsr SYM(boot_card) | Call C main -
bsps/m68k/gen68360/start/linkcmds
r715d616 r511dc4b 17 17 RamSize = DEFINED(RamSize) ? RamSize : 64M; 18 18 HeapSize = DEFINED(HeapSize) ? HeapSize : 0x0; 19 _StackSize = DEFINED(_StackSize) ? _StackSize : 0x1000;20 19 21 20 /* … … 151 150 . = ALIGN (16); 152 151 PROVIDE (end = .); 153 154 . += _StackSize;155 . = ALIGN (16);156 _stack_init = .;157 152 _clear_end = .; 158 153 } >ram -
bsps/m68k/gen68360/start/linkcmds.bootp
r715d616 r511dc4b 21 21 RamSize = DEFINED(RamSize) ? RamSize : 64M; 22 22 HeapSize = DEFINED(HeapSize) ? HeapSize : 0x0; 23 _StackSize = DEFINED(_StackSize) ? _StackSize : 0x1000;24 23 25 24 /* … … 153 152 . = ALIGN (16); 154 153 PROVIDE (end = .); 155 156 . += _StackSize;157 . = ALIGN (16);158 _stack_init = .;159 154 _clear_end = .; 160 155 } >myram -
bsps/m68k/gen68360/start/linkcmds.prom
r715d616 r511dc4b 21 21 RamSize = DEFINED(RamSize) ? RamSize : 64M; 22 22 HeapSize = DEFINED(HeapSize) ? HeapSize : 0x0; 23 _StackSize = DEFINED(_StackSize) ? _StackSize : 0x1000;24 23 25 24 /* … … 151 150 . = ALIGN (16); 152 151 PROVIDE (end = .); 153 154 . += _StackSize;155 . = ALIGN (16);156 _stack_init = .;157 152 _clear_end = .; 158 153 } >ram -
bsps/m68k/gen68360/start/start.S
r715d616 r511dc4b 391 391 bcs.s ZEROLOOP | No, skip 392 392 393 movel #_ stack_init,a7| set master stack pointer393 movel #_Configuration_Interrupt_stack_area_end,a7 | set master stack pointer 394 394 movel d0,a7@- | command line 395 395 jsr boot_card | Call C main -
bsps/m68k/genmcf548x/start/linkcmds.COBRA5475
r715d616 r511dc4b 63 63 _BootFlashSize = DEFINED(_BootFlashSize) ? _BootFlashSize : (32 * 1024*1024); 64 64 65 bsp_initstack_size = DEFINED(StackSize) ? StackSize : 0x800; /* 2 kB */66 67 65 _VBR = DEFINED(_VBR) ? _VBR : _SdramBase; 68 66 -
bsps/m68k/genmcf548x/start/linkcmds.m5484FireEngine
r715d616 r511dc4b 64 64 _CodeFlashSize = DEFINED(_CodeFlashSize) ? _CodeFlashSize : (16 * 1024*1024); 65 65 66 bsp_initstack_size = DEFINED(StackSize) ? StackSize : 0x800; /* 2 kB */67 68 66 _VBR = DEFINED(_VBR) ? _VBR : _SdramBase; 69 67 -
bsps/m68k/genmcf548x/start/linkcmds.m5484FireEngine.flash
r715d616 r511dc4b 64 64 _CodeFlashSize = DEFINED(_CodeFlashSize) ? _CodeFlashSize : (16 * 1024 * 1024); 65 65 66 bsp_initstack_size = DEFINED(StackSize) ? StackSize : 0x800; /* 2 kB */67 68 66 _VBR = DEFINED(_VBR) ? _VBR : _SdramBase; 69 67 -
bsps/m68k/genmcf548x/start/start.S
r715d616 r511dc4b 76 76 PUBLIC (InterruptVectorTable) 77 77 SYM(InterruptVectorTable): 78 INITSP: .long bsp_initstack_end/* Initial SP */78 INITSP: .long _Configuration_Interrupt_stack_area_end /* Initial SP */ 79 79 INITPC: .long start /* Initial PC */ 80 80 vector002: .long asm_default_interrupt /* Access Error */ … … 412 412 jsr mcf548x_init /* Initialize mcf548x peripherals */ 413 413 414 move.l # bsp_initstack_end,sp/* relocate sp */414 move.l #_Configuration_Interrupt_stack_area_end,sp /* relocate sp */ 415 415 416 416 clrl d0 /* clear d0 */ -
bsps/m68k/mcf52235/start/linkcmds
r715d616 r511dc4b 17 17 RamSize = DEFINED(RamSize) ? RamSize : 32K; 18 18 HeapSize = DEFINED(HeapSize) ? HeapSize : 0x0; 19 _StackSize = DEFINED(_StackSize) ? _StackSize : 0x400;20 19 _FlashBase = DEFINED(_FlashBase) ? _FlashBase : 0x00000000; 21 20 … … 172 171 } >sram 173 172 174 .stack :175 {176 /*177 * Starting Stack178 */179 . += _StackSize;180 . = ALIGN (16);181 PROVIDE(_StackInit = .);182 } >sram183 184 173 .rtemsstack (NOLOAD) : { 185 174 *(SORT(.rtemsstack.*)) -
bsps/m68k/mcf52235/start/start.S
r715d616 r511dc4b 17 17 #include <rtems/asm.h> 18 18 19 .extern _StackInit20 21 19 BEGIN_CODE 22 20 … … 24 22 SYM(_INTERRUPT_VECTOR): 25 23 26 .long _ StackInit/* 00 Initial 'SSP' */24 .long _Configuration_Interrupt_stack_area_end /* 00 Initial 'SSP' */ 27 25 .long SYM(start) /* 01 Initial PC */ 28 26 .long SYM(_uhoh) /* 02 Access Error */ … … 358 356 359 357 /* Locate Stack Pointer */ 360 move.l #_ StackInit, sp358 move.l #_Configuration_Interrupt_stack_area_end, sp 361 359 362 360 /* Initialize FLASHBAR */ … … 370 368 371 369 /* Locate Stack Pointer */ 372 move.l #_ StackInit, sp370 move.l #_Configuration_Interrupt_stack_area_end, sp 373 371 374 372 /* Save off intial D0 and D1 to RAM */ -
bsps/m68k/mcf5225x/start/linkcmds
r715d616 r511dc4b 17 17 RamSize = DEFINED(RamSize) ? RamSize : 64K; 18 18 HeapSize = DEFINED(HeapSize) ? HeapSize : 0x0; 19 _StackSize = DEFINED(_StackSize) ? _StackSize : 0x400;20 19 _FlashBase = DEFINED(_FlashBase) ? _FlashBase : 0x00000000; 21 20 … … 172 171 } >sram 173 172 174 .stack :175 {176 /*177 * Starting Stack178 */179 . += _StackSize;180 . = ALIGN (16);181 PROVIDE(_StackInit = .);182 } >sram183 184 173 .rtemsstack (NOLOAD) : { 185 174 *(SORT(.rtemsstack.*)) -
bsps/m68k/mcf5225x/start/start.S
r715d616 r511dc4b 17 17 #include <rtems/asm.h> 18 18 19 .extern _StackInit20 21 19 BEGIN_CODE 22 20 … … 24 22 SYM(_INTERRUPT_VECTOR): 25 23 26 .long _ StackInit/* 00 Initial 'SSP' */24 .long _Configuration_Interrupt_stack_area_end /* 00 Initial 'SSP' */ 27 25 .long SYM(start) /* 01 Initial PC */ 28 26 .long SYM(_uhoh) /* 02 Access Error */ … … 362 360 363 361 /* Locate Stack Pointer */ 364 move.l #_ StackInit, sp362 move.l #_Configuration_Interrupt_stack_area_end, sp 365 363 366 364 /* Initialize FLASHBAR */ … … 374 372 375 373 /* Locate Stack Pointer */ 376 // move.l #_ StackInit, sp //is done automatically by the CPU374 // move.l #_Configuration_Interrupt_stack_area_end, sp //is done automatically by the CPU 377 375 378 376 /* -
bsps/m68k/mcf5329/start/linkcmds
r715d616 r511dc4b 24 24 25 25 HeapSize = DEFINED(HeapSize) ? HeapSize : 0; 26 _StackSize = DEFINED(_StackSize) ? _StackSize : 0x400;27 26 28 27 _VBR = 0x40000000; … … 179 178 . = ALIGN (16); 180 179 PROVIDE (_end = .); 181 182 180 _clear_end = .; 181 WorkAreaBase = .; 183 182 } > dram 184 183 185 184 .rtemsstack (NOLOAD) : { 186 185 *(SORT(.rtemsstack.*)) 187 WorkAreaBase = .;188 } > dram189 190 .start_stack :191 {192 /*193 * Starting Stack194 */195 . += _StackSize;196 . = ALIGN (16);197 PROVIDE(_StackInit = .);198 186 } > core_sram 199 187 -
bsps/m68k/mcf5329/start/linkcmdsflash
r715d616 r511dc4b 24 24 25 25 HeapSize = DEFINED(HeapSize) ? HeapSize : 0; 26 _StackSize = DEFINED(_StackSize) ? _StackSize : 0x400;27 26 28 27 _VBR = 0x40000000; … … 175 174 . = ALIGN (16); 176 175 PROVIDE (_end = .); 177 178 176 _clear_end = .; 177 WorkAreaBase = .; 179 178 } > dram 180 179 181 180 .rtemsstack (NOLOAD) : { 182 181 *(SORT(.rtemsstack.*)) 183 WorkAreaBase = .;184 } > dram185 186 .start_stack :187 {188 /*189 * Starting Stack190 */191 . += _StackSize;192 . = ALIGN (16);193 PROVIDE(_StackInit = .);194 182 } > core_sram 195 183 -
bsps/m68k/mcf5329/start/start.S
r715d616 r511dc4b 17 17 #include <rtems/asm.h> 18 18 19 .extern _StackInit20 21 19 BEGIN_CODE 22 20 … … 24 22 SYM(_INTERRUPT_VECTOR): 25 23 26 .long _ StackInit/* 00 Initial 'SSP' */24 .long _Configuration_Interrupt_stack_area_end /* 00 Initial 'SSP' */ 27 25 .long SYM(start) /* 01 Initial PC */ 28 26 .long SYM(_uhoh) /* 02 Access Error */ … … 347 345 348 346 /* Locate Stack Pointer */ 349 move.l #_ StackInit,sp347 move.l #_Configuration_Interrupt_stack_area_end,sp 350 348 351 349 /* -
bsps/m68k/mrm332/start/linkcmds
r715d616 r511dc4b 33 33 * | _ENDHEAP | 34 34 * | stack space | 35 * | __stack | top of stack36 35 * +--------------------+ <- high memory 37 36 */ … … 53 52 _copy_data_from_rom = 1; 54 53 HeapSize = DEFINED(HeapSize) ? HeapSize : 0x0; 55 _StackSize = DEFINED(_StackSize) ? _StackSize : 0x2000;56 54 57 55 … … 195 193 . = ALIGN (16); 196 194 PROVIDE (end = .); 197 . += _StackSize;198 . = ALIGN (16);199 _stack_init = .;200 195 _clear_end = .; 201 196 } > ram -
bsps/m68k/mrm332/start/start.S
r715d616 r511dc4b 38 38 movecl d0,vbr 39 39 40 movel #end, d0 /* Next 3 instructions set stack pointer*/41 addl #_StackSize,d0 /* sp = end + _StackSize from linker script */42 movel 43 movel d0,a640 /* Set stack pointer */ 41 movel #_Configuration_Interrupt_stack_area_end,d0 42 movel d0,sp 43 movel d0,a6 44 44 45 45 /* include in ram_init.S */ -
bsps/m68k/shared/start/linkcmds.base
r715d616 r511dc4b 1 1 /* 2 * Copyright (c) 2008 -2013embedded brains GmbH. All rights reserved.2 * Copyright (c) 2008, 2018 embedded brains GmbH. All rights reserved. 3 3 * 4 4 * embedded brains GmbH … … 19 19 ENTRY(start) 20 20 STARTUP(start.o) 21 22 bsp_initstack_size = DEFINED (bsp_initstack_size) ? bsp_initstack_size : 2048;23 21 24 22 MEMORY { … … 226 224 } > REGION_DATA AT > REGION_DATA 227 225 bsp_vector1_size = bsp_vector1_end - bsp_vector1_begin; 228 229 .initstack : ALIGN_WITH_INPUT {230 bsp_initstack_begin = .;231 . = . + bsp_initstack_size;232 bsp_initstack_end = .;233 } > REGION_DATA AT > REGION_DATA234 226 235 227 .data : ALIGN_WITH_INPUT { -
bsps/m68k/shared/start/start.S
r715d616 r511dc4b 75 75 jlt loop | loop until _end reached 76 76 77 movel # SYM (_ stack_init),d0| d0 = stop of stack77 movel # SYM (_Configuration_Interrupt_stack_area_end),d0 | d0 = stop of stack 78 78 movw #0x3700,sr | SUPV MODE,INTERRUPTS OFF!!! 79 79 movel d0,a7 | set master stack pointer … … 136 136 .space 2 137 137 138 .align 16139 PUBLIC (starting_stack)140 SYM (starting_stack):141 .space 0x1000142 PUBLIC (_stack_init)143 SYM (_stack_init):144 145 138 END_DATA 146 139 #endif -
bsps/mips/csb350/start/linkcmds
r715d616 r511dc4b 16 16 RamSize = _sdram_size; 17 17 HeapSize = DEFINED(HeapSize) ? HeapSize : 0x0; 18 _StackSize = DEFINED(_StackSize) ? _StackSize : 0x4000;19 18 20 19 ENTRY(_start) … … 188 187 *(COMMON) 189 188 . = ALIGN (64); 190 _stack_limit = .;191 . += _StackSize;192 __stack = .;193 _stack_init = .;194 189 _clear_end = .; 195 190 end = .; -
bsps/mips/csb350/start/start.S
r715d616 r511dc4b 68 68 addiu v0,v0,4 /* executed in delay slot */ 69 69 70 la t0, _ stack_init/* initialize stack so we */70 la t0, _Configuration_Interrupt_stack_area_end /* initialize stack so we */ 71 71 /* We must subtract 24 bytes for the 3 8 byte arguments to main, in 72 72 case main wants to write them back to the stack. The caller is -
bsps/mips/hurricane/start/linkcmds
r715d616 r511dc4b 9 9 RamSize = DEFINED(RamSize) ? RamSize : 4M; 10 10 HeapSize = DEFINED(HeapSize) ? HeapSize : 0x0; 11 _StackSize = DEFINED(_StackSize) ? _StackSize : 0x1000;12 11 13 12 ENTRY(start) … … 167 166 *(COMMON) 168 167 . = ALIGN (64); 169 _stack_limit = .;170 . += _StackSize;171 __stack = .;172 _stack_init = .;173 168 end = .; 174 169 _end = .; -
bsps/mips/jmr3904/start/linkcmds
r715d616 r511dc4b 9 9 RamSize = DEFINED(RamSize) ? RamSize : 4M; 10 10 HeapSize = DEFINED(HeapSize) ? HeapSize : 0x0; 11 _StackSize = DEFINED(_StackSize) ? _StackSize : 0x1000;12 11 13 12 ENTRY(_start) … … 165 164 *(COMMON) 166 165 . = ALIGN (64); 167 _stack_limit = .;168 . += _StackSize;169 __stack = .;170 _stack_init = .;171 166 _clear_end = .; 172 167 } … … 182 177 183 178 184 /* Put starting stack in SRAM (8 Kb); this size is the same as the stack from185 the original script (when everything was in SRAM). */186 /* __stack = 0x8000A000; */187 179 /* DWARF debug sections. 188 180 Symbols in the DWARF debugging sections are relative to -
bsps/mips/jmr3904/start/start.S
r715d616 r511dc4b 140 140 addiu v0,v0,4 # executed in delay slot 141 141 142 la t0, _ stack_init# initialize stack so we142 la t0, _Configuration_Interrupt_stack_area_end # initialize stack so we 143 143 /* We must subtract 24 bytes for the 3 8 byte arguments to main, in 144 144 case main wants to write them back to the stack. The caller is -
bsps/mips/malta/start/linkcmds
r715d616 r511dc4b 9 9 RamSize = DEFINED(RamSize) ? RamSize : 128M; 10 10 HeapSize = DEFINED(HeapSize) ? HeapSize : 0x0; 11 _StackSize = DEFINED(_StackSize) ? _StackSize : 0x2000;12 11 13 12 ENTRY(_start) … … 166 165 *(COMMON) 167 166 . = ALIGN (64); 168 _stack_limit = .;169 . += _StackSize;170 __stack = .;171 _stack_init = .;172 167 _clear_end = .; 173 168 } … … 183 178 184 179 185 /* Put starting stack in SRAM (8 Kb); this size is the same as the stack from186 the original script (when everything was in SRAM). */187 /* __stack = 0x8000A000; */188 180 /* DWARF debug sections. 189 181 Symbols in the DWARF debugging sections are relative to -
bsps/mips/malta/start/start.S
r715d616 r511dc4b 167 167 addiu v0,v0,4 # executed in delay slot 168 168 169 la t0, _ stack_init# initialize stack so we169 la t0, _Configuration_Interrupt_stack_area_end # initialize stack so we 170 170 /* We must subtract 24 bytes for the 3 8 byte arguments to main, in 171 171 case main wants to write them back to the stack. The caller is -
bsps/mips/rbtx4925/start/linkcmds
r715d616 r511dc4b 9 9 RamSize = DEFINED(RamSize) ? RamSize : 4M; 10 10 HeapSize = DEFINED(HeapSize) ? HeapSize : 0x0; 11 _StackSize = DEFINED(_StackSize) ? _StackSize : 0x1000;12 11 13 12 ENTRY(start) … … 167 166 *(COMMON) 168 167 . = ALIGN (64); 169 _stack_limit = .;170 . += _StackSize;171 __stack = .;172 _stack_init = .;173 168 end = .; 174 169 _end = .; -
bsps/mips/rbtx4938/start/linkcmds
r715d616 r511dc4b 9 9 RamSize = DEFINED(RamSize) ? RamSize : 4M; 10 10 HeapSize = DEFINED(HeapSize) ? HeapSize : 0x0; 11 _StackSize = DEFINED(_StackSize) ? _StackSize : 0x1000;12 11 13 12 ENTRY(start) … … 167 166 *(COMMON) 168 167 . = ALIGN (64); 169 _stack_limit = .;170 . += _StackSize;171 __stack = .;172 _stack_init = .;173 168 end = .; 174 169 _end = .; -
bsps/mips/shared/irq/exception.S
r715d616 r511dc4b 215 215 /* 216 216 * 217 * #if ( CPU_HAS_SOFTWARE_INTERRUPT_STACK == TRUE ) 218 * if ( _ISR_Nest_level == 0 ) 219 * switch to software interrupt stack 220 * #endif 217 * if ( _ISR_Nest_level == 0 ) 218 * switch to software interrupt stack 221 219 */ 222 220 … … 308 306 309 307 /* 310 * #if ( CPU_HAS_SOFTWARE_INTERRUPT_STACK == TRUE ) 311 * restore stack 312 * #endif 308 * restore stack 313 309 * 314 310 * if ( !_Thread_Dispatch_necessary ) -
bsps/nios2/nios2_iss/start/linkcmds
r715d616 r511dc4b 25 25 RamSize = DEFINED(RamSize) ? RamSize : 0x00800000; 26 26 HeapSize = DEFINED(HeapSize) ? HeapSize : 0x0; 27 StackSize = DEFINED(StackSize) ? HeapSize : 1024;28 27 29 28 MEMORY … … 266 265 . = ALIGN(32 / 8); 267 266 __bss_end = ABSOLUTE(.); 267 } > onchip_memory_0 268 269 .rtemsstack (NOLOAD) : { 268 270 _stack_low = ABSOLUTE(.); 269 . += StackSize;271 *(SORT(.rtemsstack.*)) 270 272 _stack_high = ABSOLUTE(.); 271 } > onchip_memory_0272 273 .rtemsstack (NOLOAD) : {274 *(SORT(.rtemsstack.*))275 273 WorkAreaBase = .; 276 274 } > onchip_memory_0 -
bsps/powerpc/beatnik/start/bspstart.c
r715d616 r511dc4b 178 178 unsigned char *stack; 179 179 char *chpt; 180 uint 32_t intrStackStart;181 uint 32_t intrStackSize;180 uintptr_t intrStackStart; 181 uintptr_t intrStackSize; 182 182 183 183 Triv121PgTbl pt=0; … … 240 240 * some settings below... 241 241 */ 242 intrStackStart = (uint 32_t)__rtems_end;242 intrStackStart = (uintptr_t)_Configuration_Interrupt_stack_area_begin; 243 243 intrStackSize = rtems_configuration_get_interrupt_stack_size(); 244 244 -
bsps/powerpc/gen5200/include/bsp.h
r715d616 r511dc4b 56 56 LINKER_SYMBOL(bsp_section_bss_size); 57 57 58 LINKER_SYMBOL(bsp_interrupt_stack_start);59 LINKER_SYMBOL(bsp_interrupt_stack_end);60 LINKER_SYMBOL(bsp_interrupt_stack_size);61 62 58 LINKER_SYMBOL(bsp_work_area_start); 63 59 -
bsps/powerpc/gen5200/start/bspstart.c
r715d616 r511dc4b 155 155 ppc_exc_cache_wb_check = 0; 156 156 ppc_exc_initialize( 157 (uintptr_t) bsp_interrupt_stack_start,158 (uintptr_t) bsp_interrupt_stack_size157 (uintptr_t) _Configuration_Interrupt_stack_area_begin, 158 rtems_configuration_get_interrupt_stack_size() 159 159 ); 160 160 ppc_exc_set_handler(ASM_ALIGN_VECTOR, ppc_exc_alignment_handler); -
bsps/powerpc/gen5200/start/linkcmds.gen5200_base
r715d616 r511dc4b 288 288 bsp_section_data_size = bsp_section_data_end - bsp_section_data_start; 289 289 bsp_section_bss_size = bsp_section_bss_end - bsp_section_bss_start; 290 291 /*292 * BSP: Interrupt stack293 */294 bsp_interrupt_stack_start = bsp_section_bss_end;295 bsp_interrupt_stack_end = bsp_interrupt_stack_start + 32k;296 bsp_interrupt_stack_size = bsp_interrupt_stack_end - bsp_interrupt_stack_start;297 290 298 291 .rtemsstack (NOLOAD) : { -
bsps/powerpc/gen83xx/include/bsp.h
r715d616 r511dc4b 53 53 LINKER_SYMBOL(bsp_section_bss_end); 54 54 LINKER_SYMBOL(bsp_section_bss_size); 55 56 LINKER_SYMBOL(bsp_interrupt_stack_start);57 LINKER_SYMBOL(bsp_interrupt_stack_end);58 LINKER_SYMBOL(bsp_interrupt_stack_size);59 55 60 56 LINKER_SYMBOL(bsp_work_area_start); -
bsps/powerpc/gen83xx/start/start.S
r715d616 r511dc4b 418 418 419 419 /* Set start stack pointer */ 420 LA r1, start_stack_end420 LA r1, _Configuration_Interrupt_stack_area_end 421 421 stwu r3, -4(r1) 422 422 stwu r3, -4(r1) … … 521 521 /* Return */ 522 522 blr 523 524 .section ".bsp_rwextra", "aw", @nobits525 526 /* Start stack area */527 .align 4528 .space 4096529 start_stack_end: -
bsps/powerpc/haleakala/start/bspstart.c
r715d616 r511dc4b 67 67 68 68 #include <stdio.h> 69 70 LINKER_SYMBOL(intrStack_start);71 LINKER_SYMBOL(intrStack_size);72 69 /* 73 70 * Driver configuration parameters … … 189 186 */ 190 187 ppc_exc_initialize( 191 (uintptr_t) intrStack_start,192 (uintptr_t) intrStack_size188 (uintptr_t) _Configuration_Interrupt_stack_area_begin, 189 rtems_configuration_get_interrupt_stack_size() 193 190 ); 194 191 -
bsps/powerpc/haleakala/start/dlentry.S
r715d616 r511dc4b 55 55 * see linker command file for section placement 56 56 * 57 * The initial stack is set to stack.end57 * The initial stack is set to _Configuration_Interrupt_stack_area_end. 58 58 * 59 59 * All the entry veneer has to do is to clear the BSS. … … 99 99 .long sbss.start 100 100 stack_top: 101 .long stack.end101 .long _Configuration_Interrupt_stack_area_end 102 102 PUBLIC_VAR (text_addr) 103 103 text_addr: -
bsps/powerpc/haleakala/start/linkcmds
r715d616 r511dc4b 14 14 ENTRY(download_entry) 15 15 EXTERN(__vectors) 16 17 kIntrStackSize = 16K;18 kMainStackSize = 64K;19 16 20 17 RamBase = DEFINED(RamBase) ? RamBase : 0; … … 247 244 bss.size = bss.end - bss.start; 248 245 sbss.size = sbss.end - sbss.start; 249 250 /* Interrupt stack: align to a cache-line boundary */251 IntrStack_start = ALIGN(0x20);252 . += kIntrStackSize;253 intrStack = .;254 PROVIDE(intrStackPtr = intrStack);255 PROVIDE(intrStack_start = IntrStack_start);256 PROVIDE(intrStack_size = kIntrStackSize);257 258 /* Main stack: align to a cache-line boundary */259 stack.start = ALIGN(0x20);260 . += kMainStackSize;261 stack.end = .;262 246 263 247 .rtemsstack (NOLOAD) : { -
bsps/powerpc/motorola_powerpc/start/bspstart.c
r715d616 r511dc4b 221 221 * Initialize the interrupt related settings. 222 222 */ 223 intrStackStart = (uintptr_t) __rtems_end;223 intrStackStart = (uintptr_t)_Configuration_Interrupt_stack_area_begin; 224 224 intrStackSize = rtems_configuration_get_interrupt_stack_size(); 225 225 -
bsps/powerpc/mpc55xxevb/start/start.S
r715d616 r511dc4b 229 229 230 230 /* Initialize start stack */ 231 LA r1, start_stack_end231 LA r1, _Configuration_Interrupt_stack_area_end 232 232 subi r1, r1, 16 233 233 li r0, 0 … … 290 290 beqlr cr7 291 291 b memcpy 292 293 /* Start stack area */294 295 .section ".bsp_rwextra", "aw", @nobits296 .align 4297 .space 4096298 299 start_stack_end: -
bsps/powerpc/mpc8260ads/start/bspstart.c
r715d616 r511dc4b 70 70 uint32_t bsp_serial_rate; 71 71 72 extern char IntrStack_start [];73 extern char intrStack [];74 75 72 static void _BSP_GPLED0_on(void) 76 73 { … … 143 140 144 141 /* Initialize exception handler */ 145 /* FIXME: Interrupt stack begin and size */146 142 ppc_exc_initialize( 147 (uintptr_t) IntrStack_start,148 (uintptr_t) intrStack - (uintptr_t) IntrStack_start143 (uintptr_t) _Configuration_Interrupt_stack_area_begin, 144 rtems_configuration_get_interrupt_stack_size() 149 145 ); 150 146 -
bsps/powerpc/mpc8260ads/start/linkcmds
r715d616 r511dc4b 18 18 * the lines marked XXX below to use a constant value. 19 19 */ 20 StackSize = DEFINED(StackSize) ? StackSize : 0x8000;21 20 RamBase = DEFINED(RamBase) ? RamBase : 0x0; 22 21 RamSize = DEFINED(RamSize) ? RamDiskSize : 0x0800000; /* 8M program ram */ … … 290 289 } >ram 291 290 292 293 /*294 * Interrupt stack setup295 */296 IntrStack_start = ALIGN(0x10);297 . += 0x4000;298 intrStack = .;299 PROVIDE(intrStackPtr = intrStack);300 301 302 291 clear_end = .; 303 292 -
bsps/powerpc/mvme3100/start/bspstart.c
r715d616 r511dc4b 256 256 * Initialize the interrupt related settings. 257 257 */ 258 intrStackStart = (uintptr_t) _ _rtems_end;258 intrStackStart = (uintptr_t) _Configuration_Interrupt_stack_area_begin; 259 259 intrStackSize = rtems_configuration_get_interrupt_stack_size(); 260 260 -
bsps/powerpc/mvme5500/start/bspstart.c
r715d616 r511dc4b 226 226 * Initialize the interrupt related settings. 227 227 */ 228 intrStackStart = (uintptr_t) _ _rtems_end;228 intrStackStart = (uintptr_t) _Configuration_Interrupt_stack_area_begin; 229 229 intrStackSize = rtems_configuration_get_interrupt_stack_size(); 230 230 -
bsps/powerpc/psim/start/start.S
r715d616 r511dc4b 48 48 49 49 .Lstack = .-.LCTOC1 /* stack address if set by user */ 50 .long _ _stack50 .long _Configuration_Interrupt_stack_area_end 51 51 52 52 .text … … 90 90 .Ldone: 91 91 92 lwz r0,.Lstack(r5) /* stack addressor 0 */92 lwz r0,.Lstack(r5) /* stack area or 0 */ 93 93 cmplwi 1,r0,0 /* equal to 0? */ 94 94 bc 12,6,.Lnostack /* use default stack if == 0 */ … … 134 134 .Lstart: 135 135 .size _start,.Lstart-_start 136 137 /* Start stack area */138 .section ".bsp_rwextra", "aw", @nobits139 .align 4140 .space 4096141 __stack: -
bsps/powerpc/qemuppc/start/bspstart.c
r715d616 r511dc4b 43 43 */ 44 44 extern char RamSize[]; 45 extern char bsp_interrupt_stack_start[];46 extern char bsp_interrupt_stack_end[];47 45 uint32_t BSP_mem_size = (uint32_t)RamSize; 48 46 … … 90 88 * Initialize the interrupt related settings. 91 89 */ 92 intrStackStart = (uintptr_t) bsp_interrupt_stack_start;93 intrStackSize = (uintptr_t) bsp_interrupt_stack_end - intrStackStart;90 intrStackStart = (uintptr_t) _Configuration_Interrupt_stack_area_begin; 91 intrStackSize = rtems_configuration_get_interrupt_stack_size(); 94 92 95 93 BSP_mem_size = (uint32_t )RamSize; -
bsps/powerpc/qemuppc/start/start.S
r715d616 r511dc4b 2 2 #include <rtems/powerpc/powerpc.h> 3 3 4 #include <bspopts.h>5 6 .global bsp_interrupt_stack_start7 .global bsp_interrupt_stack_end8 4 .global _start 9 5 … … 11 7 12 8 _start: 13 lis %r1, bsp_interrupt_stack_start@h14 ori %r1,%r1, bsp_interrupt_stack_start@l9 lis %r1,_Configuration_Interrupt_stack_area_end@h 10 ori %r1,%r1,_Configuration_Interrupt_stack_area_end@l 15 11 /* Make sure stack is properly aligned */ 16 12 li %r3, CPU_STACK_ALIGNMENT - 1 … … 43 39 b _start 44 40 .size _reset, . - _reset 45 46 /* Start stack area */47 .section ".bsp_rwextra", "aw", @nobits48 .align 449 .space 409650 bsp_interrupt_stack_start:51 .space 3276852 bsp_interrupt_stack_end: -
bsps/powerpc/qoriq/start/start.S
r715d616 r511dc4b 56 56 57 57 /* Get start stack */ 58 LA START_STACK, start_stack_end 58 LA START_STACK, _Configuration_Interrupt_stack_area_begin 59 LA r3, _Configuration_Interrupt_stack_size 60 add START_STACK, START_STACK, r3 59 61 60 62 bl .Linitmore … … 227 229 228 230 /* 229 * Initialize start stack. Make sure that we do not share a cache line 230 * with the heap block management, since initial stacks for the 231 * secondary processors are allocated from the workspace. 231 * Initialize start stack. The stacks are statically allocated and 232 * properly aligned. 232 233 */ 233 subi r1, START_STACK, 2 * PPC_DEFAULT_CACHE_LINE_SIZE 234 clrrwi r1, r1, PPC_DEFAULT_CACHE_LINE_POWER 234 subi r1, START_STACK, PPC_DEFAULT_CACHE_LINE_SIZE 235 235 li r0, 0 236 236 PPC_REG_STORE r0, 0(r1) … … 541 541 /* Symbol provided for debugging and tracing */ 542 542 bsp_exc_vector_end: 543 544 /* Start stack area */545 .section ".bsp_rwextra", "aw", @nobits546 .align 4547 .space 4096548 start_stack_end: -
bsps/powerpc/shared/start/linkcmds.base
r715d616 r511dc4b 322 322 .rtemsstack (NOLOAD) : ALIGN_WITH_INPUT { 323 323 bsp_section_rtemsstack_begin = .; 324 *(.bsp_rwextra)325 324 *(SORT(.rtemsstack.*)) 326 325 bsp_section_rtemsstack_end = .; -
bsps/powerpc/ss555/start/bspstart.c
r715d616 r511dc4b 33 33 SPR_RW(SPRG1) 34 34 35 extern unsigned long intrStackPtr;36 37 35 /* 38 36 * Driver configuration parameters … … 68 66 void bsp_start(void) 69 67 { 70 register unsignedchar* intrStack;68 char* intrStack; 71 69 72 70 /* … … 81 79 * Initialize some SPRG registers related to irq handling 82 80 */ 83 intrStack = (((unsigned char*)&intrStackPtr) - PPC_MINIMUM_STACK_FRAME_SIZE); 81 intrStack = (char *)_Configuration_Interrupt_stack_area_end - 82 PPC_MINIMUM_STACK_FRAME_SIZE; 84 83 _write_SPRG1((unsigned int)intrStack); 85 84 -
bsps/powerpc/ss555/start/linkcmds
r715d616 r511dc4b 233 233 PROVIDE(_end = bss.end); 234 234 235 /*236 * Initialization stack237 */238 InitStack_start = ALIGN(0x10);239 . += 0x1000;240 initStack = .;241 PROVIDE(initStackPtr = initStack);242 243 /*244 * Interrupt stack245 */246 IntrStack_start = ALIGN(0x10);247 . += 0x4000;248 intrStack = .;249 PROVIDE(intrStackPtr = intrStack);250 251 235 .rtemsstack (NOLOAD) : { 252 236 *(SORT(.rtemsstack.*)) -
bsps/powerpc/ss555/start/start.S
r715d616 r511dc4b 221 221 */ 222 222 stack_top: 223 .long initStackPtr223 .long _Configuration_Interrupt_stack_area_end 224 224 225 225 toc_pointer: -
bsps/powerpc/t32mppc/start/start.S
r715d616 r511dc4b 35 35 36 36 /* Initialize start stack */ 37 L WI r1, start_stack_end37 LA r1, _Configuration_Interrupt_stack_area_end 38 38 subi r1, r1, 16 39 39 li r0, 0 … … 196 196 li r3, 35 197 197 b ppc_exc_fatal_normal 198 199 /* Start stack area */200 .section ".bsp_rwextra", "aw", @nobits201 .align 4202 .space 4096203 start_stack_end: -
bsps/powerpc/tqm8xx/include/bsp.h
r715d616 r511dc4b 53 53 LINKER_SYMBOL( bsp_section_bss_end); 54 54 LINKER_SYMBOL( bsp_section_bss_size); 55 56 LINKER_SYMBOL( bsp_interrupt_stack_start);57 LINKER_SYMBOL( bsp_interrupt_stack_end);58 LINKER_SYMBOL( bsp_interrupt_stack_size);59 55 60 56 LINKER_SYMBOL( bsp_work_area_start); -
bsps/powerpc/tqm8xx/start/bspstart.c
r715d616 r511dc4b 100 100 void bsp_start( void) 101 101 { 102 103 uintptr_t interrupt_stack_start = (uintptr_t) bsp_interrupt_stack_start;104 uintptr_t interrupt_stack_size = (uintptr_t) bsp_interrupt_stack_end105 - interrupt_stack_start;106 107 102 /* 108 103 * Get CPU identification dynamically. Note that the get_ppc_cpu_type() … … 150 145 151 146 /* Initialize exception handler */ 152 ppc_exc_initialize(interrupt_stack_start, interrupt_stack_size); 147 ppc_exc_initialize( 148 (uintptr_t) _Configuration_Interrupt_stack_area_begin, 149 rtems_configuration_get_interrupt_stack_size() 150 ); 153 151 154 152 /* Initalize interrupt support */ -
bsps/powerpc/tqm8xx/start/start.S
r715d616 r511dc4b 27 27 28 28 PUBLIC_VAR (_start) 29 PUBLIC_VAR (bsp_interrupt_stack_start)30 PUBLIC_VAR (bsp_interrupt_stack_end)31 29 32 30 .section ".bsp_start_text", "ax" … … 120 118 121 119 /* Set stack pointer (common for RAM/ROM startup) */ 122 LA r1, bsp_section_text_begin123 addi r1, r1, -0x10 /* Set up stack pointer = beginning of text section - 0x10 */120 LA r1, _Configuration_Interrupt_stack_area_end 121 addi r1, r1, -0x10 124 122 125 123 /* Create NULL */ … … 286 284 287 285 end_reloc_startup: 288 289 /* Interrupt stack */290 .section ".bsp_rwextra", "aw", @nobits291 .align 4292 bsp_interrupt_stack_start:293 .space 32768294 bsp_interrupt_stack_end: -
bsps/powerpc/virtex4/start/bspstart.c
r715d616 r511dc4b 86 86 LINKER_SYMBOL(__bsp_ram_end); 87 87 LINKER_SYMBOL(__rtems_end); 88 LINKER_SYMBOL(_stack);89 LINKER_SYMBOL(StackSize);90 LINKER_SYMBOL(__stack_base);91 88 LINKER_SYMBOL(WorkAreaBase); 92 89 LINKER_SYMBOL(MsgAreaBase); … … 175 172 * Initialize the interrupt related settings. 176 173 */ 177 intrStackStart = CPU_UP_ALIGN((uint32_t)__bsp_ram_start);174 intrStackStart = (uintptr_t) _Configuration_Interrupt_stack_area_begin; 178 175 intrStackSize = rtems_configuration_get_interrupt_stack_size(); 179 176 … … 185 182 "RTEMS: %p\n" 186 183 "Interrupt Stack: 0x%08x 0x%x\n" 187 "Stack: %p %p %p\n"188 184 "Workspace: %p %p\n" 189 185 "MsgArea: %p %p\n" … … 192 188 __rtems_end, 193 189 intrStackStart, intrStackSize, 194 __stack_base, _stack, StackSize,195 190 WorkAreaBase, __bsp_ram_end, 196 191 MsgAreaBase, MsgAreaSize, -
bsps/powerpc/virtex4/start/linkcmds
r715d616 r511dc4b 16 16 RamBase = DEFINED(RamBase) ? RamBase : 0x0; 17 17 RamSize = DEFINED(RamSize) ? RamSize : 128M - MsgAreaSize; 18 IntrStackSize = DEFINED(IntrStackSize) ? IntrStackSize : 16K;19 StackSize = DEFINED(StackSize) ? StackSize : 64K;20 18 HeapSize = DEFINED(HeapSize) ? HeapSize : 0; /* 0=Use def */ 21 19 … … 252 250 PROVIDE(__bsp_ram_start = .); 253 251 254 /* Interrupt stack: aligned on a cache-line boundary */255 . += IntrStackSize;256 __intrStack = .;257 258 /* Main stack lives here */259 _stack = ALIGN(0x10); /* Align to a cache-line boundary */260 . += StackSize;261 __stack_base = .; /* Initial stack builds downwards */262 263 252 .rtemsstack (NOLOAD) : { 264 253 *(SORT(.rtemsstack.*)) -
bsps/powerpc/virtex4/start/start.S
r715d616 r511dc4b 83 83 * see linker command file for section placement 84 84 * 85 * The initial stack is set to _ _stack_base.85 * The initial stack is set to _Configuration_Interrupt_stack_area_end. 86 86 * 87 87 */ … … 110 110 .long __bss_start 111 111 stack_top: 112 .long _ _stack_base112 .long _Configuration_Interrupt_stack_area_end 113 113 dccr_contents: 114 114 .long __dccr -
bsps/powerpc/virtex5/start/bspstart.c
r715d616 r511dc4b 87 87 LINKER_SYMBOL(__bsp_ram_end); 88 88 LINKER_SYMBOL(__rtems_end); 89 LINKER_SYMBOL(_stack);90 LINKER_SYMBOL(StackSize);91 LINKER_SYMBOL(__stack_base);92 89 LINKER_SYMBOL(WorkAreaBase); 93 90 LINKER_SYMBOL(MsgAreaBase); … … 194 191 * Initialize the interrupt related settings. 195 192 */ 196 intrStackStart = CPU_UP_ALIGN((uint32_t)__bsp_ram_start);193 intrStackStart = (uintptr_t)_Configuration_Interrupt_stack_area_begin; 197 194 intrStackSize = rtems_configuration_get_interrupt_stack_size(); 198 195 … … 204 201 "RTEMS: %p\n" 205 202 "Interrupt Stack: 0x%08x 0x%x\n" 206 "Stack: %p %p %p\n"207 203 "Workspace: %p %p\n" 208 204 "MsgArea: %p %p\n" … … 211 207 __rtems_end, 212 208 intrStackStart, intrStackSize, 213 __stack_base, _stack, StackSize,214 209 WorkAreaBase, __bsp_ram_end, 215 210 MsgAreaBase, MsgAreaSize, -
bsps/powerpc/virtex5/start/linkcmds
r715d616 r511dc4b 16 16 RamBase = DEFINED(RamBase) ? RamBase : 0x0; 17 17 RamSize = DEFINED(RamSize) ? RamSize : 2048M - MsgAreaSize; 18 IntrStackSize = DEFINED(IntrStackSize) ? IntrStackSize : 16K;19 StackSize = DEFINED(StackSize) ? StackSize : 64K;20 18 HeapSize = DEFINED(HeapSize) ? HeapSize : 0; /* 0=Use def */ 21 19 … … 252 250 PROVIDE(__bsp_ram_start = .); 253 251 254 /* Interrupt stack: aligned on a cache-line boundary */255 . += IntrStackSize;256 __intrStack = .;257 258 /* Main stack lives here */259 _stack = ALIGN(0x20); /* Align to a cache-line boundary */260 . += StackSize;261 __stack_base = .; /* Initial stack builds downwards */262 263 252 .rtemsstack (NOLOAD) : { 264 253 *(SORT(.rtemsstack.*)) -
bsps/powerpc/virtex5/start/start.S
r715d616 r511dc4b 87 87 * see linker command file for section placement 88 88 * 89 * The initial stack is set to _ _stack_base89 * The initial stack is set to _Configuration_Interrupt_stack_area_end. 90 90 * 91 91 * All the entry veneer has to do is to clear the BSS. … … 115 115 .long __bss_start 116 116 stack_top: 117 .long _ _stack_base117 .long _Configuration_Interrupt_stack_area_end 118 118 119 119 -
bsps/riscv/riscv_generic/start/start.S
r715d616 r511dc4b 81 81 82 82 /* load stack and frame pointers */ 83 la sp, bsp_section_stack_begin83 la sp, _Configuration_Interrupt_stack_area_end 84 84 85 85 /* Clearing .bss */ -
bsps/sh/gensh1/include/bsp.h
r715d616 r511dc4b 50 50 51 51 /* 52 * Defined in the linker script 'linkcmds'53 */54 55 extern void *CPU_Interrupt_stack_low;56 extern void *CPU_Interrupt_stack_high;57 58 /*59 52 * BSP methods that cross file boundaries. 60 53 */ -
bsps/sh/gensh1/start/cpu_asm.c
r715d616 r511dc4b 45 45 extern proc_ptr _Hardware_isr_Table[]; 46 46 47 #if (CPU_HAS_SOFTWARE_INTERRUPT_STACK == TRUE) 48 unsigned long *_old_stack_ptr; 49 #endif 47 unsigned long *_old_stack_ptr; 50 48 51 49 register unsigned long *stack_ptr __asm__ ("r15"); … … 136 134 _Thread_Dispatch_disable(); 137 135 138 #if (CPU_HAS_SOFTWARE_INTERRUPT_STACK == TRUE)139 136 if ( _ISR_Nest_level == 0 ) 140 137 { … … 143 140 stack_ptr = _CPU_Interrupt_stack_high; 144 141 } 145 146 #endif147 142 148 143 _ISR_Nest_level++; … … 160 155 _ISR_Nest_level--; 161 156 162 #if(CPU_HAS_SOFTWARE_INTERRUPT_STACK == TRUE)163 164 157 if ( _ISR_Nest_level == 0 ) 165 158 /* restore old stack pointer */ 166 159 stack_ptr = _old_stack_ptr; 167 #endif168 160 169 161 _ISR_Local_enable( level ); -
bsps/sh/gensh1/start/linkcmds
r715d616 r511dc4b 193 193 } > onchip_ram 194 194 195 _CPU_Interrupt_stack_low = 0x0f000000 ;196 _CPU_Interrupt_stack_high = _CPU_Interrupt_stack_low + 4096 ;197 198 195 /* Stabs debugging sections. */ 199 196 .stab 0 : { *(.stab) } … … 229 226 .debug_typenames 0 : { *(.debug_typenames) } 230 227 .debug_varnames 0 : { *(.debug_varnames) } 231 232 stack : { _stack = .; *(.stack) } > onchip_ram233 228 /* These must appear regardless of . */ 234 229 } -
bsps/sh/gensh1/start/start.S
r715d616 r511dc4b 67 67 .align 2 68 68 stack_k: 69 .long SYM( stack)69 .long SYM(_Configuration_Interrupt_stack_area_end) 70 70 edata_k: 71 71 .long SYM(edata) … … 81 81 vects_size: 82 82 .word 255 83 84 #ifdef __ELF__85 .section .stack,"aw"86 #else87 .section .stack88 #endif89 SYM(stack):90 .long 0xdeaddead -
bsps/sh/gensh2/include/bsp.h
r715d616 r511dc4b 64 64 65 65 /* 66 * Defined in the linker script 'linkcmds'67 */68 extern void *CPU_Interrupt_stack_low;69 extern void *CPU_Interrupt_stack_high;70 71 /*72 66 * BSP methods that cross file boundaries. 73 67 */ -
bsps/sh/gensh2/start/cpu_asm.c
r715d616 r511dc4b 43 43 extern proc_ptr _Hardware_isr_Table[]; 44 44 45 #if (CPU_HAS_SOFTWARE_INTERRUPT_STACK == TRUE) 46 unsigned long *_old_stack_ptr; 47 #endif 45 unsigned long *_old_stack_ptr; 48 46 49 47 register unsigned long *stack_ptr __asm__ ("r15"); … … 137 135 _Thread_Dispatch_disable(); 138 136 139 #if (CPU_HAS_SOFTWARE_INTERRUPT_STACK == TRUE)140 137 if ( _ISR_Nest_level == 0 ) 141 138 { … … 144 141 stack_ptr = _CPU_Interrupt_stack_high; 145 142 } 146 147 #endif148 143 149 144 _ISR_Nest_level++; … … 161 156 _ISR_Nest_level--; 162 157 163 #if (CPU_HAS_SOFTWARE_INTERRUPT_STACK == TRUE)164 165 158 if ( _ISR_Nest_level == 0 ) 166 159 /* restore old stack pointer */ 167 160 stack_ptr = _old_stack_ptr; 168 #endif169 161 170 162 _ISR_Local_enable( level ); -
bsps/sh/gensh2/start/linkcmds
r715d616 r511dc4b 204 204 } > onchip_ram 205 205 206 _CPU_Interrupt_stack_low = 0xFFFFF000;207 _CPU_Interrupt_stack_high = 0xFFFFFFFF;208 209 206 /* Stabs debugging sections. */ 210 207 .stab 0 : { *(.stab) } … … 240 237 .debug_typenames 0 : { *(.debug_typenames) } 241 238 .debug_varnames 0 : { *(.debug_varnames) } 242 243 .stack 0xFFFFFEC0 : { _stack = .; *(.stack) } > onchip_ram244 239 /* These must appear regardless of . */ 245 240 } -
bsps/sh/gensh2/start/linkcmds.ram
r715d616 r511dc4b 206 206 } > onchip_ram 207 207 208 _CPU_Interrupt_stack_low = 0xFFFFF000;209 _CPU_Interrupt_stack_high = 0xFFFFFFFF;210 211 208 /* Stabs debugging sections. */ 212 209 .stab 0 : { *(.stab) } … … 242 239 .debug_typenames 0 : { *(.debug_typenames) } 243 240 .debug_varnames 0 : { *(.debug_varnames) } 244 245 .stack 0xFFFFFEC0 : { _stack = .; *(.stack) } > onchip_ram246 241 /* These must appear regardless of . */ 247 242 } -
bsps/sh/gensh2/start/linkcmds.rom
r715d616 r511dc4b 211 211 } > onchip_ram 212 212 213 _CPU_Interrupt_stack_low = 0xFFFFF000;214 _CPU_Interrupt_stack_high = 0xFFFFFFFF;215 216 213 /* Stabs debugging sections. */ 217 214 .stab 0 : { *(.stab) } … … 247 244 .debug_typenames 0 : { *(.debug_typenames) } 248 245 .debug_varnames 0 : { *(.debug_varnames) } 249 250 .stack 0xFFFFFEC0 : { _stack = .; *(.stack) } > onchip_ram251 246 /* These must appear regardless of . */ 252 247 } -
bsps/sh/gensh2/start/start.S
r715d616 r511dc4b 156 156 .align 2 157 157 stack_k: 158 .long SYM( stack)158 .long SYM(_Configuration_Interrupt_stack_area_end) 159 159 edata_k: 160 160 .long SYM(edata) … … 177 177 178 178 #ifdef __ELF__ 179 .section .stack,"aw"180 #else181 .section .stack182 #endif183 SYM(stack):184 .long 0xdeaddead185 186 #ifdef __ELF__187 179 .section .bss,"aw" 188 180 #else -
bsps/sh/gensh2/start/start.ram
r715d616 r511dc4b 159 159 .align 2 160 160 stack_k: 161 .long SYM( stack)161 .long SYM(_Configuration_Interrupt_stack_area_end) 162 162 edata_k: 163 163 .long SYM(edata) … … 180 180 181 181 #ifdef __ELF__ 182 .section .stack,"aw"183 #else184 .section .stack185 #endif186 SYM(stack):187 .long 0xdeaddead188 189 #ifdef __ELF__190 182 .section .bss,"aw" 191 183 #else -
bsps/sh/gensh2/start/start.rom
r715d616 r511dc4b 68 68 .align 2 69 69 stack_k: 70 .long SYM( stack)70 .long SYM(_Configuration_Interrupt_stack_area_end) 71 71 edata_k: 72 72 .long SYM(edata) … … 82 82 vects_size: 83 83 .word 255 84 85 #ifdef __ELF__86 .section .stack,"aw"87 #else88 .section .stack89 #endif90 SYM(stack):91 .long 0xdeaddead -
bsps/sh/gensh4/include/bsp.h
r715d616 r511dc4b 54 54 55 55 /* 56 * Defined in the linker script 'linkcmds'57 */58 59 extern void *CPU_Interrupt_stack_low;60 extern void *CPU_Interrupt_stack_high;61 62 /*63 56 * Defined in start.S 64 57 */ -
bsps/sh/gensh4/start/cpu_asm.c
r715d616 r511dc4b 43 43 extern proc_ptr _Hardware_isr_Table[]; 44 44 45 #if (CPU_HAS_SOFTWARE_INTERRUPT_STACK == TRUE) 46 unsigned long *_old_stack_ptr; 47 #endif 45 unsigned long *_old_stack_ptr; 48 46 49 47 register unsigned long *stack_ptr __asm__ ("r15"); … … 61 59 _Thread_Dispatch_disable(); 62 60 63 #if (CPU_HAS_SOFTWARE_INTERRUPT_STACK == TRUE)64 61 if ( _ISR_Nest_level == 0 ) 65 62 { … … 68 65 stack_ptr = _CPU_Interrupt_stack_high; 69 66 } 70 71 #endif72 67 73 68 _ISR_Nest_level++; … … 85 80 _ISR_Nest_level--; 86 81 87 #if (CPU_HAS_SOFTWARE_INTERRUPT_STACK == TRUE)88 82 if ( _ISR_Nest_level == 0 ) 89 83 /* restore old stack pointer */ 90 84 stack_ptr = _old_stack_ptr; 91 #endif92 85 93 86 _ISR_Local_enable( level ); -
bsps/sh/gensh4/start/linkcmds
r715d616 r511dc4b 145 145 } > ram 146 146 147 .stack : {148 . = . + 4096;149 } > ram150 151 147 .rtemsstack (NOLOAD) : { 152 148 *(SORT(.rtemsstack.*)) … … 154 150 155 151 _WorkAreaBase = . ; 156 157 . = ALIGN(16);158 _CPU_Interrupt_stack_low = . ;159 _CPU_Interrupt_stack_high = _CPU_Interrupt_stack_low + 4096 ;160 152 161 153 /* Stabs debugging sections. */ -
bsps/sh/gensh4/start/linkcmds.rom
r715d616 r511dc4b 193 193 194 194 _WorkAreaBase = . ; 195 196 . = ALIGN(16);197 .stack . : {198 stack_start = .;199 . = . + 4096;200 stack_end = .;201 }202 203 . = ALIGN(16);204 _CPU_Interrupt_stack_low = . ;205 _CPU_Interrupt_stack_high = _CPU_Interrupt_stack_low + 4096 ;206 195 207 196 /* Stabs debugging sections. */ … … 238 227 .debug_typenames 0 : { *(.debug_typenames) } 239 228 .debug_varnames 0 : { *(.debug_varnames) } 240 .stack : { _stack = .; *(.stack) }241 229 /* These must appear regardless of . */ 242 230 } -
bsps/sh/gensh4/start/linkcmds.rom2ram
r715d616 r511dc4b 197 197 198 198 _WorkAreaBase = . ; 199 200 . = ALIGN(16);201 .stack . : {202 stack_start = .;203 . = . + 4096;204 stack_end = .;205 }206 207 . = ALIGN(16);208 _CPU_Interrupt_stack_low = . ;209 _CPU_Interrupt_stack_high = _CPU_Interrupt_stack_low + 4096 ;210 199 211 200 /* Stabs debugging sections. */ … … 242 231 .debug_typenames 0 : { *(.debug_typenames) } 243 232 .debug_varnames 0 : { *(.debug_varnames) } 244 .stack : { _stack = .; *(.stack) }245 233 /* These must appear regardless of . */ 246 234 } -
bsps/sh/gensh4/start/start.S
r715d616 r511dc4b 216 216 .long SYM(_VBR_Saved) 217 217 stack_k: 218 .long SYM( stack)218 .long SYM(_Configuration_Interrupt_stack_area_end) 219 219 __bss_start_k: 220 220 .long __bss_start … … 256 256 257 257 #ifdef __ELF__ 258 .section .stack,"aw"259 #else260 .section .stack261 #endif262 SYM(stack):263 .long 0xdeaddead264 265 #ifdef __ELF__266 258 .section .bss,"aw" 267 259 #else -
bsps/sh/shared/start/bspstart.c
r715d616 r511dc4b 50 50 51 51 /* 52 * initialize the interrupt stack for this BSP53 */54 #if ( CPU_ALLOCATE_INTERRUPT_STACK == FALSE )55 _CPU_Interrupt_stack_low = &CPU_Interrupt_stack_low;56 _CPU_Interrupt_stack_high = &CPU_Interrupt_stack_high;57 #endif58 59 /*60 52 * initialize the device driver parameters 61 53 */ -
bsps/sh/shsim/include/bsp.h
r715d616 r511dc4b 47 47 48 48 /* 49 * Defined in the linker script 'linkcmds'50 */51 extern void *CPU_Interrupt_stack_low;52 extern void *CPU_Interrupt_stack_high;53 54 /*55 49 * BSP methods that cross file boundaries. 56 50 */ -
bsps/sh/shsim/start/cpu_asm.c
r715d616 r511dc4b 19 19 #include <rtems/score/sh.h> 20 20 21 #if (CPU_HAS_SOFTWARE_INTERRUPT_STACK == TRUE) 22 unsigned long *_old_stack_ptr; 23 #endif 21 unsigned long *_old_stack_ptr; 24 22 25 23 register unsigned long *stack_ptr __asm__ ("r15"); … … 38 36 _Thread_Dispatch_disable(); 39 37 40 #if (CPU_HAS_SOFTWARE_INTERRUPT_STACK == TRUE)41 38 if ( _ISR_Nest_level == 0 ) 42 39 { … … 45 42 stack_ptr = _CPU_Interrupt_stack_high; 46 43 } 47 48 #endif49 44 50 45 _ISR_Nest_level++; … … 62 57 _ISR_Nest_level--; 63 58 64 #if (CPU_HAS_SOFTWARE_INTERRUPT_STACK == TRUE)65 66 59 if ( _ISR_Nest_level == 0 ) 67 60 /* restore old stack pointer */ 68 61 stack_ptr = _old_stack_ptr; 69 #endif70 62 71 63 _ISR_Local_enable( level ); -
bsps/sh/shsim/start/linkcmds
r715d616 r511dc4b 203 203 PROVIDE (end = .); 204 204 205 .stack : {206 . += 0x1000;207 *(.stack)208 _stack = .;209 } > ram210 _stack = .;211 212 205 .rtemsstack (NOLOAD) : { 213 206 *(SORT(.rtemsstack.*)) … … 215 208 216 209 _WorkAreaBase = . ; 217 218 _CPU_Interrupt_stack_low = 0x00080000 ;219 _CPU_Interrupt_stack_high = _CPU_Interrupt_stack_low + 4096 ;220 210 221 211 /* Stabs debugging sections. */ … … 252 242 .debug_typenames 0 : { *(.debug_typenames) } 253 243 .debug_varnames 0 : { *(.debug_varnames) } 254 255 /*256 .stack 0x00081ff0 : { _stack = .; *(.stack) } > onchip_ram257 */258 244 /* These must appear regardless of . */ 259 245 } -
bsps/sh/shsim/start/start.S
r715d616 r511dc4b 69 69 .align 2 70 70 stack_k: 71 .long SYM( stack)71 .long SYM(_Configuration_Interrupt_stack_area_end) 72 72 edata_k: 73 73 .long SYM(edata) … … 83 83 vects_size: 84 84 .word 255 85 86 #ifdef __ELF__87 .section .stack,"aw"88 #else89 .section .stack90 #endif91 SYM(stack):92 .long 0xdeaddead93 monvects_k:94 .long SYM(monvects) -
bsps/sparc/shared/start/bspgetworkarea.c
r715d616 r511dc4b 28 28 void bsp_work_area_initialize(void) 29 29 { 30 /* must be identical to STACK_SIZE in start.S */31 #define STACK_SIZE (16 * 1024)32 33 30 /* Early dynamic memory allocator is placed just above _end */ 34 31 void *work_area_start = (void *)&end; 35 uintptr_t work_area_size = 36 (uintptr_t)rdb_start - (uintptr_t)&end - STACK_SIZE; 32 uintptr_t work_area_size = (uintptr_t)rdb_start - (uintptr_t)work_area_start; 37 33 38 34 /* -
bsps/sparc/shared/start/start.S
r715d616 r511dc4b 266 266 #define PSR_INIT 0x10c0 /* Disable traps, set s and ps */ 267 267 #define WIM_INIT 2 268 #define STACK_SIZE 16 * 1024269 268 270 269 PUBLIC(hard_reset) … … 318 317 #endif 319 318 320 set (SYM(rdb_start)), %g5 ! End of RAM319 set SYM(rdb_start), %g5 ! End of RAM 321 320 st %sp, [%g5] 322 sub %sp, 4, %sp ! stack starts at end of RAM - 4 321 set SYM(_Configuration_Interrupt_stack_size), %g5 322 #if defined(START_LEON3_ENABLE_SMP) 323 add %o0, 1, %o0 324 smul %o0, %g5, %g5 325 #endif 326 set SYM(_Configuration_Interrupt_stack_area_begin), %sp 327 add %sp, %g5, %sp 328 sub %sp, 4, %sp ! stack starts at end of area - 4 323 329 andn %sp, 0x0f, %sp ! align stack on 16-byte boundary 324 330 mov %sp, %fp ! Set frame pointer -
bsps/v850/gdbv850sim/start/linkcmds
r715d616 r511dc4b 5 5 _RamSize = DEFINED(_RamSize) ? _RamSize : 0x100000; /* default is 1MB */ 6 6 _HeapSize = DEFINED(_HeapSize) ? _HeapSize : 0x0; 7 _StackSize = DEFINED(_StackSize) ? _StackSize : 0x1000;8 7 9 8 /* Default linker script, for normal executables */ … … 193 192 *(COMMON) 194 193 } 195 . += _StackSize;196 _stack = .;197 194 .rtemsstack (NOLOAD) : { 198 195 *(SORT(.rtemsstack.*)) … … 234 231 .debug_typenames 0 : { *(.debug_typenames) } 235 232 .debug_varnames 0 : { *(.debug_varnames) } 236 /* libgloss - User stack. */237 /*238 .stack 0x200000 :239 {240 __stack = .;241 *(.stack)242 }243 */244 233 } 245 234 -
bsps/v850/gdbv850sim/start/start.S
r715d616 r511dc4b 10 10 movea 255, r0, r20 11 11 mov 65535, r21 12 mov hilo(_ stack), sp12 mov hilo(__Configuration_Interrupt_stack_area_end), sp 13 13 mov hilo(__ep), ep 14 14 mov hilo(__gp), gp … … 37 37 mov r0, r21 38 38 ori 65535, r0, r21 39 movhi hi(_ stack), r0, sp40 movea lo(_ stack), sp, sp39 movhi hi(__Configuration_Interrupt_stack_area_end), r0, sp 40 movea lo(__Configuration_Interrupt_stack_area_end), sp, sp 41 41 movhi hi(__ep), r0, ep 42 42 movea lo(__ep), ep, ep … … 67 67 # endif 68 68 69 #if 070 .section .stack71 _stack: .long 172 #endif73 74 69 .section .data 75 70 .global ___dso_handle -
c/src/lib/libbsp/arm/altera-cyclone-v/Makefile.am
r715d616 r511dc4b 20 20 dist_project_lib_DATA += ../../../../../../bsps/arm/altera-cyclone-v/start/linkcmds.altcycv 21 21 dist_project_lib_DATA += ../../../../../../bsps/arm/altera-cyclone-v/start/linkcmds.altcycv_devkit 22 dist_project_lib_DATA += ../../../../../../bsps/arm/altera-cyclone-v/start/linkcmds.altcycv_devkit_smp23 22 24 23 project_lib_LIBRARIES = librtemsbsp.a -
c/src/lib/libbsp/arm/raspberrypi/configure.ac
r715d616 r511dc4b 11 11 RTEMS_SOURCE_TOP 12 12 RTEMS_BUILD_TOP 13 RTEMS_BSP_LINKCMDS 13 14 14 15 RTEMS_CANONICAL_TARGET_CPU … … 37 38 AM_CONDITIONAL(RTEMS_RPI2,[test "$BSP_IS_RPI2" = "1"]) 38 39 39 # Hom many CPUs are used?40 RASPBERRYPI_CPUS="1"41 AS_IF([test "$rtems_cv_HAS_SMP" = "yes"],42 [RASPBERRYPI_CPUS="4"])43 44 AC_DEFUN([RASPBERRYPI_LINKCMD],[45 AC_ARG_VAR([$1],[$2; default $3])dnl46 [$1]=[$]{[$1]:-[$3]}47 ])48 49 RASPBERRYPI_LINKCMD([RASPBERRYPI_CPUS],[Number of active cores],[${RASPBERRYPI_CPUS}])50 51 40 RTEMS_BSP_CLEANUP_OPTIONS 52 41 53 AC_CONFIG_FILES([ 54 Makefile 55 linkcmds:../../../../../../bsps/arm/raspberrypi/start/linkcmds.in]) 42 AC_CONFIG_FILES([Makefile]) 56 43 AC_OUTPUT -
c/src/lib/libbsp/arm/realview-pbx-a9/Makefile.am
r715d616 r511dc4b 27 27 project_lib_DATA += linkcmds 28 28 dist_project_lib_DATA += ../../../../../../bsps/arm/realview-pbx-a9/start/linkcmds.realview_pbx_a9_qemu 29 dist_project_lib_DATA += ../../../../../../bsps/arm/realview-pbx-a9/start/linkcmds.realview_pbx_a9_qemu_smp30 29 31 30 ############################################################################### -
c/src/lib/libbsp/arm/xilinx-zynq/configure.ac
r715d616 r511dc4b 58 58 RTEMS_BSPOPTS_SET([ZYNQ_CONSOLE_USE_INTERRUPTS],[*],[1]) 59 59 RTEMS_BSPOPTS_HELP([ZYNQ_CONSOLE_USE_INTERRUPTS],[use interrupt driven mode for console devices (used by default)]) 60 61 ZYNQ_CPUS="1"62 AS_IF([test "$rtems_cv_HAS_SMP" = "yes"],63 [ZYNQ_CPUS="2"])64 60 65 61 # … … 127 123 ]) 128 124 129 ZYNQ_LINKCMD([ZYNQ_CPUS],[Number of active cores],[${ZYNQ_CPUS}])130 125 ZYNQ_LINKCMD([ZYNQ_RAM_ORIGIN],[normal RAM region origin],[${ZYNQ_RAM_ORIGIN}]) 131 126 ZYNQ_LINKCMD([ZYNQ_RAM_LENGTH],[normal RAM region length],[${BSP_ZYNQ_RAM_LENGTH}]) -
cpukit/include/rtems/confdefs.h
r715d616 r511dc4b 1183 1183 #endif 1184 1184 1185 /* *1186 * @brief Interrupt stack sizeconfiguration.1185 /* 1186 * Interrupt stack configuration. 1187 1187 * 1188 1188 * By default, the interrupt stack will be of minimum size. 1189 1189 * The BSP or application may override this value. 1190 1190 */ 1191 1191 1192 #ifndef CONFIGURE_INTERRUPT_STACK_SIZE 1192 1193 #ifdef BSP_INTERRUPT_STACK_SIZE … … 1197 1198 #endif 1198 1199 1199 /** 1200 * This reserves memory for the interrupt stack if it is to be allocated 1201 * by RTEMS rather than the BSP. 1202 * 1203 * @todo Try to get to the point where all BSPs support allocating the 1204 * memory from the Workspace. 1205 */ 1206 #if (CPU_ALLOCATE_INTERRUPT_STACK == 0) 1207 #define _CONFIGURE_INTERRUPT_STACK_MEMORY 0 1208 #else 1209 #define _CONFIGURE_INTERRUPT_STACK_MEMORY \ 1210 _Configure_From_workspace( CONFIGURE_INTERRUPT_STACK_SIZE ) 1200 #if CONFIGURE_INTERRUPT_STACK_SIZE % CPU_INTERRUPT_STACK_ALIGNMENT != 0 1201 #error "CONFIGURE_INTERRUPT_STACK_SIZE fails to meet the CPU port interrupt stack alignment" 1202 #endif 1203 1204 #ifdef CONFIGURE_INIT 1205 RTEMS_DEFINE_GLOBAL_SYMBOL( 1206 _Configuration_Interrupt_stack_size, 1207 CONFIGURE_INTERRUPT_STACK_SIZE 1208 ); 1209 1210 char _Configuration_Interrupt_stack_area_begin[ 1211 CONFIGURE_MAXIMUM_PROCESSORS * CONFIGURE_INTERRUPT_STACK_SIZE 1212 ] RTEMS_ALIGNED( CPU_INTERRUPT_STACK_ALIGNMENT ) 1213 RTEMS_SECTION( ".rtemsstack.interrupt.begin" ); 1214 1215 const char _Configuration_Interrupt_stack_area_end[ 0 ] 1216 RTEMS_SECTION( ".rtemsstack.interrupt.end" ) = { }; 1211 1217 #endif 1212 1218 … … 2721 2727 */ 2722 2728 #define _CONFIGURE_MEMORY_FOR_SYSTEM_OVERHEAD \ 2723 ( _CONFIGURE_MEMORY_FOR_INTERNAL_TASKS + \ 2724 _CONFIGURE_INTERRUPT_STACK_MEMORY \ 2725 ) 2729 _CONFIGURE_MEMORY_FOR_INTERNAL_TASKS 2726 2730 2727 2731 /** … … 2752 2756 _CONFIGURE_MEMORY_FOR_USER_EXTENSIONS(CONFIGURE_MAXIMUM_USER_EXTENSIONS) \ 2753 2757 ) 2754 2755 /*2756 * This macro provides a summation of the memory required by SMP as configured.2757 */2758 #if defined(RTEMS_SMP)2759 #define _CONFIGURE_MEMORY_FOR_SMP \2760 (CONFIGURE_MAXIMUM_PROCESSORS * \2761 _Configure_From_workspace( CONFIGURE_INTERRUPT_STACK_SIZE ) \2762 )2763 #else2764 #define _CONFIGURE_MEMORY_FOR_SMP 02765 #endif2766 2758 2767 2759 /** … … 2784 2776 _CONFIGURE_MEMORY_FOR_STATIC_EXTENSIONS + \ 2785 2777 _CONFIGURE_MEMORY_FOR_MP + \ 2786 _CONFIGURE_MEMORY_FOR_SMP + \2787 2778 CONFIGURE_MESSAGE_BUFFER_MEMORY + \ 2788 2779 (CONFIGURE_MEMORY_OVERHEAD * 1024) + \ … … 3083 3074 CONFIGURE_IDLE_TASK_BODY, /* user's IDLE task */ 3084 3075 CONFIGURE_IDLE_TASK_STACK_SIZE, /* IDLE task stack size */ 3085 CONFIGURE_INTERRUPT_STACK_SIZE, /* interrupt stack size */3086 3076 CONFIGURE_TASK_STACK_ALLOCATOR_INIT, /* stack allocator init */ 3087 3077 CONFIGURE_TASK_STACK_ALLOCATOR, /* stack allocator */ … … 3240 3230 3241 3231 /* System overhead pieces */ 3242 uint32_t INTERRUPT_STACK_MEMORY;3243 3232 uint32_t MEMORY_FOR_IDLE_TASK; 3244 3233 … … 3289 3278 3290 3279 /* System overhead pieces */ 3291 _CONFIGURE_INTERRUPT_STACK_MEMORY,3292 3280 _CONFIGURE_MEMORY_FOR_INTERNAL_TASKS, 3293 3281 -
cpukit/include/rtems/config.h
r715d616 r511dc4b 185 185 uint32_t idle_task_stack_size; 186 186 187 /**188 * This field specifies the size of the interrupt stack. If less than or189 * equal to the minimum stack size, then the interrupt stack will be of190 * minimum stack size.191 */192 uint32_t interrupt_stack_size;193 194 187 /** 195 188 * @brief Optional task stack allocator initialization hook. … … 314 307 (Configuration.idle_task_stack_size) 315 308 309 /** 310 * @brief Global symbol with a value equal to the configure interrupt stack size. 311 * 312 * This global symbol is defined by the application configuration option 313 * CONFIGURE_INIT_TASK_STACK_SIZE via <rtems/confdefs.h>. 314 */ 315 RTEMS_DECLARE_GLOBAL_SYMBOL( _Configuration_Interrupt_stack_size ); 316 317 /** 318 * @brief The interrupt stack area begin. 319 * 320 * The interrupt stack area is defined by the application configuration via 321 * <rtems/confdefs.h>. The size of the area depends on 322 * CONFIGURE_INIT_TASK_STACK_SIZE and CONFIGURE_MAXIMUM_PROCESSORS. 323 */ 324 extern char _Configuration_Interrupt_stack_area_begin[]; 325 326 /** 327 * @brief The interrupt stack area end. 328 * 329 * The interrupt stack area is defined by the application configuration via 330 * <rtems/confdefs.h>. The size of the area depends on 331 * CONFIGURE_INIT_TASK_STACK_SIZE and CONFIGURE_MAXIMUM_PROCESSORS. 332 */ 333 extern const char _Configuration_Interrupt_stack_area_end[]; 334 316 335 #define rtems_configuration_get_interrupt_stack_size() \ 317 ( Configuration.interrupt_stack_size)336 ((size_t) _Configuration_Interrupt_stack_size) 318 337 319 338 #define rtems_configuration_get_stack_allocate_init_hook() \ -
cpukit/include/rtems/score/percpu.h
r715d616 r511dc4b 294 294 #endif 295 295 296 #if (CPU_ALLOCATE_INTERRUPT_STACK == TRUE) || \ 297 (CPU_HAS_SOFTWARE_INTERRUPT_STACK == TRUE) 298 /** 299 * This contains a pointer to the lower range of the interrupt stack for 300 * this CPU. This is the address allocated and freed. 301 */ 302 void *interrupt_stack_low; 303 304 /** 305 * This contains a pointer to the interrupt stack pointer for this CPU. 306 * It will be loaded at the beginning on an ISR. 307 */ 308 void *interrupt_stack_high; 309 #endif 296 /** 297 * @brief The interrupt stack low address for this processor. 298 */ 299 void *interrupt_stack_low; 300 301 /** 302 * @brief The interrupt stack high address for this processor. 303 */ 304 void *interrupt_stack_high; 310 305 311 306 /** … … 801 796 #if defined( ASM ) || defined( _RTEMS_PERCPU_DEFINE_OFFSETS ) 802 797 803 #if (CPU_ALLOCATE_INTERRUPT_STACK == TRUE) || \ 804 (CPU_HAS_SOFTWARE_INTERRUPT_STACK == TRUE) 805 /* 806 * If this CPU target lets RTEMS allocates the interrupt stack, then 807 * we need to have places in the per CPU table to hold them. 808 */ 809 #define PER_CPU_INTERRUPT_STACK_LOW \ 810 CPU_PER_CPU_CONTROL_SIZE 811 #define PER_CPU_INTERRUPT_STACK_HIGH \ 812 PER_CPU_INTERRUPT_STACK_LOW + CPU_SIZEOF_POINTER 813 #define PER_CPU_END_STACK \ 814 PER_CPU_INTERRUPT_STACK_HIGH + CPU_SIZEOF_POINTER 815 816 #define INTERRUPT_STACK_LOW \ 817 (SYM(_Per_CPU_Information) + PER_CPU_INTERRUPT_STACK_LOW) 818 #define INTERRUPT_STACK_HIGH \ 819 (SYM(_Per_CPU_Information) + PER_CPU_INTERRUPT_STACK_HIGH) 820 #else 821 #define PER_CPU_END_STACK \ 822 CPU_PER_CPU_CONTROL_SIZE 823 #endif 798 #define PER_CPU_INTERRUPT_STACK_LOW \ 799 CPU_PER_CPU_CONTROL_SIZE 800 #define PER_CPU_INTERRUPT_STACK_HIGH \ 801 PER_CPU_INTERRUPT_STACK_LOW + CPU_SIZEOF_POINTER 802 803 #define INTERRUPT_STACK_LOW \ 804 (SYM(_Per_CPU_Information) + PER_CPU_INTERRUPT_STACK_LOW) 805 #define INTERRUPT_STACK_HIGH \ 806 (SYM(_Per_CPU_Information) + PER_CPU_INTERRUPT_STACK_HIGH) 824 807 825 808 /* … … 827 810 */ 828 811 #define PER_CPU_ISR_NEST_LEVEL \ 829 PER_CPU_ END_STACK812 PER_CPU_INTERRUPT_STACK_HIGH + CPU_SIZEOF_POINTER 830 813 #define PER_CPU_ISR_DISPATCH_DISABLE \ 831 814 PER_CPU_ISR_NEST_LEVEL + 4 -
cpukit/libmisc/stackchk/check.c
r715d616 r511dc4b 182 182 void rtems_stack_checker_begin_extension( Thread_Control *executing ) 183 183 { 184 #if (CPU_ALLOCATE_INTERRUPT_STACK == TRUE)185 184 Per_CPU_Control *cpu_self; 186 185 uint32_t cpu_self_index; … … 214 213 #if defined(RTEMS_SMP) 215 214 _Thread_Dispatch_enable( cpu_self ); 216 #endif217 215 #endif 218 216 } -
cpukit/score/cpu/arm/include/rtems/score/cpu.h
r715d616 r511dc4b 105 105 */ 106 106 #define CPU_SIMPLE_VECTORED_INTERRUPTS FALSE 107 108 #define CPU_HAS_SOFTWARE_INTERRUPT_STACK FALSE109 110 #define CPU_HAS_HARDWARE_INTERRUPT_STACK FALSE111 112 #define CPU_ALLOCATE_INTERRUPT_STACK FALSE113 107 114 108 #define CPU_ISR_PASSES_FRAME_POINTER FALSE -
cpukit/score/cpu/bfin/cpu.c
r715d616 r511dc4b 199 199 the_context->imask = new_level ? 0 : 0xffff; 200 200 } 201 202 203 204 /*205 * _CPU_Install_interrupt_stack206 *207 * NO_CPU Specific Information:208 *209 * XXX document implementation including references if appropriate210 */211 212 void _CPU_Install_interrupt_stack( void )213 {214 } -
cpukit/score/cpu/bfin/include/rtems/score/cpu.h
r715d616 r511dc4b 31 31 /* conditional compilation parameters */ 32 32 33 /**34 * Does RTEMS manage a dedicated interrupt stack in software?35 *36 * If TRUE, then a stack is allocated in @ref _ISR_Handler_initialization.37 * If FALSE, nothing is done.38 *39 * If the CPU supports a dedicated interrupt stack in hardware,40 * then it is generally the responsibility of the BSP to allocate it41 * and set it up.42 *43 * If the CPU does not support a dedicated interrupt stack, then44 * the porter has two options: (1) execute interrupts on the45 * stack of the interrupted task, and (2) have RTEMS manage a dedicated46 * interrupt stack.47 *48 * If this is TRUE, @ref CPU_ALLOCATE_INTERRUPT_STACK should also be TRUE.49 *50 * Only one of @ref CPU_HAS_SOFTWARE_INTERRUPT_STACK and51 * @ref CPU_HAS_HARDWARE_INTERRUPT_STACK should be set to TRUE. It is52 * possible that both are FALSE for a particular CPU. Although it53 * is unclear what that would imply about the interrupt processing54 * procedure on that CPU.55 *56 * Port Specific Information:57 *58 * XXX document implementation including references if appropriate59 */60 #define CPU_HAS_SOFTWARE_INTERRUPT_STACK TRUE61 62 33 /* 63 34 * Does the CPU follow the simple vectored interrupt model? … … 72 43 */ 73 44 #define CPU_SIMPLE_VECTORED_INTERRUPTS TRUE 74 75 /**76 * Does this CPU have hardware support for a dedicated interrupt stack?77 *78 * If TRUE, then it must be installed during initialization.79 * If FALSE, then no installation is performed.80 *81 * If this is TRUE, @ref CPU_ALLOCATE_INTERRUPT_STACK should also be TRUE.82 *83 * Only one of @ref CPU_HAS_SOFTWARE_INTERRUPT_STACK and84 * @ref CPU_HAS_HARDWARE_INTERRUPT_STACK should be set to TRUE. It is85 * possible that both are FALSE for a particular CPU. Although it86 * is unclear what that would imply about the interrupt processing87 * procedure on that CPU.88 *89 * Port Specific Information:90 *91 * XXX document implementation including references if appropriate92 */93 #define CPU_HAS_HARDWARE_INTERRUPT_STACK FALSE94 95 /**96 * Does RTEMS allocate a dedicated interrupt stack in the Interrupt Manager?97 *98 * If TRUE, then the memory is allocated during initialization.99 * If FALSE, then the memory is allocated during initialization.100 *101 * This should be TRUE is CPU_HAS_SOFTWARE_INTERRUPT_STACK is TRUE.102 *103 * Port Specific Information:104 *105 * XXX document implementation including references if appropriate106 */107 #define CPU_ALLOCATE_INTERRUPT_STACK TRUE108 45 109 46 /** … … 403 340 /** 404 341 * @defgroup CPUInterrupt Processor Dependent Interrupt Management 405 *406 * On some CPUs, RTEMS supports a software managed interrupt stack.407 * This stack is allocated by the Interrupt Manager and the switch408 * is performed in @ref _ISR_Handler. These variables contain pointers409 * to the lowest and highest addresses in the chunk of memory allocated410 * for the interrupt stack. Since it is unknown whether the stack411 * grows up or down (in general), this give the CPU dependent412 * code the option of picking the version it wants to use.413 *414 * @note These two variables are required if the macro415 * @ref CPU_HAS_SOFTWARE_INTERRUPT_STACK is defined as TRUE.416 *417 * Port Specific Information:418 *419 * XXX document implementation including references if appropriate420 342 */ 421 343 /**@{**/ … … 817 739 818 740 /** 819 * @ingroup CPUInterrupt820 * This routine installs the hardware interrupt stack pointer.821 *822 * @note It need only be provided if @ref CPU_HAS_HARDWARE_INTERRUPT_STACK823 * is TRUE.824 *825 * Port Specific Information:826 *827 * XXX document implementation including references if appropriate828 */829 void _CPU_Install_interrupt_stack( void );830 831 /**832 741 * This routine is the CPU dependent IDLE thread body. 833 742 * -
cpukit/score/cpu/epiphany/cpu.c
r715d616 r511dc4b 84 84 } 85 85 86 void _CPU_Install_interrupt_stack( void )87 {88 /* Do nothing */89 }90 91 86 CPU_Counter_ticks _CPU_Counter_read( void ) 92 87 { -
cpukit/score/cpu/epiphany/include/rtems/score/cpu.h
r715d616 r511dc4b 49 49 50 50 /* conditional compilation parameters */ 51 52 /*53 * Does RTEMS manage a dedicated interrupt stack in software?54 *55 * If TRUE, then a stack is allocated in _ISR_Handler_initialization.56 * If FALSE, nothing is done.57 *58 * If the CPU supports a dedicated interrupt stack in hardware,59 * then it is generally the responsibility of the BSP to allocate it60 * and set it up.61 *62 * If the CPU does not support a dedicated interrupt stack, then63 * the porter has two options: (1) execute interrupts on the64 * stack of the interrupted task, and (2) have RTEMS manage a dedicated65 * interrupt stack.66 *67 * If this is TRUE, CPU_ALLOCATE_INTERRUPT_STACK should also be TRUE.68 *69 * Only one of CPU_HAS_SOFTWARE_INTERRUPT_STACK and70 * CPU_HAS_HARDWARE_INTERRUPT_STACK should be set to TRUE. It is71 * possible that both are FALSE for a particular CPU. Although it72 * is unclear what that would imply about the interrupt processing73 * procedure on that CPU.74 *75 * Currently, for epiphany port, _ISR_Handler is responsible for switching to76 * RTEMS dedicated interrupt task.77 *78 */79 80 #define CPU_HAS_SOFTWARE_INTERRUPT_STACK TRUE81 82 /*83 * Does this CPU have hardware support for a dedicated interrupt stack?84 *85 * If TRUE, then it must be installed during initialization.86 * If FALSE, then no installation is performed.87 *88 * If this is TRUE, CPU_ALLOCATE_INTERRUPT_STACK should also be TRUE.89 *90 * Only one of CPU_HAS_SOFTWARE_INTERRUPT_STACK and91 * CPU_HAS_HARDWARE_INTERRUPT_STACK should be set to TRUE. It is92 * possible that both are FALSE for a particular CPU. Although it93 * is unclear what that would imply about the interrupt processing94 * procedure on that CPU.95 *96 */97 98 #define CPU_HAS_HARDWARE_INTERRUPT_STACK FALSE99 100 /*101 * Does RTEMS allocate a dedicated interrupt stack in the Interrupt Manager?102 *103 * If TRUE, then the memory is allocated during initialization.104 * If FALSE, then the memory is allocated during initialization.105 *106 * This should be TRUE is CPU_HAS_SOFTWARE_INTERRUPT_STACK is TRUE107 * or CPU_INSTALL_HARDWARE_INTERRUPT_STACK is TRUE.108 *109 */110 111 #define CPU_ALLOCATE_INTERRUPT_STACK TRUE112 51 113 52 /* … … 729 668 730 669 /* 731 * _CPU_Install_interrupt_stack732 *733 * This routine installs the hardware interrupt stack pointer.734 *735 * NOTE: It need only be provided if CPU_HAS_HARDWARE_INTERRUPT_STACK736 * is TRUE.737 *738 */739 740 void _CPU_Install_interrupt_stack( void );741 742 /*743 670 * _CPU_Thread_Idle_body 744 671 * -
cpukit/score/cpu/i386/include/rtems/score/cpu.h
r715d616 r511dc4b 49 49 */ 50 50 #define CPU_SIMPLE_VECTORED_INTERRUPTS FALSE 51 52 /*53 * i386 has an RTEMS allocated and managed interrupt stack.54 */55 56 #define CPU_HAS_SOFTWARE_INTERRUPT_STACK TRUE57 #define CPU_HAS_HARDWARE_INTERRUPT_STACK FALSE58 #define CPU_ALLOCATE_INTERRUPT_STACK TRUE59 51 60 52 /* -
cpukit/score/cpu/lm32/cpu.c
r715d616 r511dc4b 102 102 103 103 /* 104 * _CPU_Install_interrupt_stack105 *106 * LM32 Specific Information:107 *108 * XXX document implementation including references if appropriate109 */110 111 void _CPU_Install_interrupt_stack( void )112 {113 }114 115 /*116 104 * _CPU_Thread_Idle_body 117 105 * -
cpukit/score/cpu/lm32/include/rtems/score/cpu.h
r715d616 r511dc4b 30 30 31 31 /** 32 * Does RTEMS manage a dedicated interrupt stack in software?33 *34 * If TRUE, then a stack is allocated in @ref _ISR_Handler_initialization.35 * If FALSE, nothing is done.36 *37 * If the CPU supports a dedicated interrupt stack in hardware,38 * then it is generally the responsibility of the BSP to allocate it39 * and set it up.40 *41 * If the CPU does not support a dedicated interrupt stack, then42 * the porter has two options: (1) execute interrupts on the43 * stack of the interrupted task, and (2) have RTEMS manage a dedicated44 * interrupt stack.45 *46 * If this is TRUE, @ref CPU_ALLOCATE_INTERRUPT_STACK should also be TRUE.47 *48 * Only one of @ref CPU_HAS_SOFTWARE_INTERRUPT_STACK and49 * @ref CPU_HAS_HARDWARE_INTERRUPT_STACK should be set to TRUE. It is50 * possible that both are FALSE for a particular CPU. Although it51 * is unclear what that would imply about the interrupt processing52 * procedure on that CPU.53 *54 * Port Specific Information:55 *56 * XXX document implementation including references if appropriate57 */58 #define CPU_HAS_SOFTWARE_INTERRUPT_STACK TRUE59 60 /**61 32 * Does the CPU follow the simple vectored interrupt model? 62 33 * … … 70 41 */ 71 42 #define CPU_SIMPLE_VECTORED_INTERRUPTS TRUE 72 73 /**74 * Does this CPU have hardware support for a dedicated interrupt stack?75 *76 * If TRUE, then it must be installed during initialization.77 * If FALSE, then no installation is performed.78 *79 * If this is TRUE, @ref CPU_ALLOCATE_INTERRUPT_STACK should also be TRUE.80 *81 * Only one of @ref CPU_HAS_SOFTWARE_INTERRUPT_STACK and82 * @ref CPU_HAS_HARDWARE_INTERRUPT_STACK should be set to TRUE. It is83 * possible that both are FALSE for a particular CPU. Although it84 * is unclear what that would imply about the interrupt processing85 * procedure on that CPU.86 *87 * Port Specific Information:88 *89 * XXX document implementation including references if appropriate90 */91 #define CPU_HAS_HARDWARE_INTERRUPT_STACK FALSE92 93 /**94 * Does RTEMS allocate a dedicated interrupt stack in the Interrupt Manager?95 *96 * If TRUE, then the memory is allocated during initialization.97 * If FALSE, then the memory is allocated during initialization.98 *99 * This should be TRUE is CPU_HAS_SOFTWARE_INTERRUPT_STACK is TRUE.100 *101 * Port Specific Information:102 *103 * XXX document implementation including references if appropriate104 */105 #define CPU_ALLOCATE_INTERRUPT_STACK TRUE106 43 107 44 /** … … 427 364 /** 428 365 * @defgroup CPUInterrupt Processor Dependent Interrupt Management 429 *430 * On some CPUs, RTEMS supports a software managed interrupt stack.431 * This stack is allocated by the Interrupt Manager and the switch432 * is performed in @ref _ISR_Handler. These variables contain pointers433 * to the lowest and highest addresses in the chunk of memory allocated434 * for the interrupt stack. Since it is unknown whether the stack435 * grows up or down (in general), this give the CPU dependent436 * code the option of picking the version it wants to use.437 *438 * NOTE: These two variables are required if the macro439 * @ref CPU_HAS_SOFTWARE_INTERRUPT_STACK is defined as TRUE.440 *441 * Port Specific Information:442 *443 * XXX document implementation including references if appropriate444 366 */ 445 367 /**@{**/ … … 848 770 ); 849 771 850 /**851 * This routine installs the hardware interrupt stack pointer.852 *853 * NOTE: It need only be provided if @ref CPU_HAS_HARDWARE_INTERRUPT_STACK854 * is TRUE.855 *856 * Port Specific Information:857 *858 * XXX document implementation including references if appropriate859 */860 void _CPU_Install_interrupt_stack( void );861 862 772 /** @} */ 863 773 -
cpukit/score/cpu/lm32/irq.c
r715d616 r511dc4b 22 22 #include <rtems/score/threaddispatch.h> 23 23 24 #if( CPU_HAS_SOFTWARE_INTERRUPT_STACK == TRUE) 25 unsigned long *_old_stack_ptr; 26 #endif 24 unsigned long *_old_stack_ptr; 27 25 28 26 void *_exception_stack_frame; … … 45 43 _Thread_Dispatch_disable(); 46 44 47 #if( CPU_HAS_SOFTWARE_INTERRUPT_STACK == TRUE)48 45 if ( _ISR_Nest_level == 0 ) { 49 46 /* Install irq stack */ … … 51 48 stack_ptr = _CPU_Interrupt_stack_high - 4; 52 49 } 53 #endif54 50 55 51 _ISR_Nest_level++; … … 65 61 _ISR_Nest_level--; 66 62 67 #if( CPU_HAS_SOFTWARE_INTERRUPT_STACK == TRUE)68 63 if( _ISR_Nest_level == 0) 69 64 stack_ptr = _old_stack_ptr; 70 #endif71 65 72 66 _Thread_Dispatch_unnest( _Per_CPU_Get() ); -
cpukit/score/cpu/m32c/cpu.c
r715d616 r511dc4b 114 114 115 115 /* 116 * _CPU_Install_interrupt_stack117 *118 * NO_CPU Specific Information:119 *120 * XXX document implementation including references if appropriate121 */122 123 void _CPU_Install_interrupt_stack( void )124 {125 }126 127 /*128 116 * _CPU_Thread_Idle_body 129 117 * -
cpukit/score/cpu/m32c/cpu_asm.c
r715d616 r511dc4b 74 74 * may need to save some special interrupt information for exit 75 75 * 76 * #if ( CPU_HAS_SOFTWARE_INTERRUPT_STACK == TRUE ) 77 * if ( _ISR_Nest_level == 0 ) 78 * switch to software interrupt stack 79 * #endif 76 * if ( _ISR_Nest_level == 0 ) 77 * switch to software interrupt stack 80 78 * 81 79 * _ISR_Nest_level++; … … 101 99 * 102 100 * LABEL "exit interrupt (simple case): 103 * #if ( CPU_HAS_SOFTWARE_INTERRUPT_STACK == TRUE ) 104 * if outermost interrupt 105 * restore stack 106 * #endif 101 * if outermost interrupt 102 * restore stack 107 103 * prepare to get out of interrupt 108 104 * return from interrupt -
cpukit/score/cpu/m32c/include/rtems/score/cpu.h
r715d616 r511dc4b 46 46 47 47 /** 48 * Does RTEMS manage a dedicated interrupt stack in software?49 *50 * If TRUE, then a stack is allocated in @ref _ISR_Handler_initialization.51 * If FALSE, nothing is done.52 *53 * If the CPU supports a dedicated interrupt stack in hardware,54 * then it is generally the responsibility of the BSP to allocate it55 * and set it up.56 *57 * If the CPU does not support a dedicated interrupt stack, then58 * the porter has two options: (1) execute interrupts on the59 * stack of the interrupted task, and (2) have RTEMS manage a dedicated60 * interrupt stack.61 *62 * If this is TRUE, @ref CPU_ALLOCATE_INTERRUPT_STACK should also be TRUE.63 *64 * Only one of @ref CPU_HAS_SOFTWARE_INTERRUPT_STACK and65 * @ref CPU_HAS_HARDWARE_INTERRUPT_STACK should be set to TRUE. It is66 * possible that both are FALSE for a particular CPU. Although it67 * is unclear what that would imply about the interrupt processing68 * procedure on that CPU.69 *70 * Port Specific Information:71 *72 * XXX document implementation including references if appropriate73 */74 #define CPU_HAS_SOFTWARE_INTERRUPT_STACK FALSE75 76 /**77 48 * Does the CPU follow the simple vectored interrupt model? 78 49 * … … 86 57 */ 87 58 #define CPU_SIMPLE_VECTORED_INTERRUPTS TRUE 88 89 /**90 * Does this CPU have hardware support for a dedicated interrupt stack?91 *92 * If TRUE, then it must be installed during initialization.93 * If FALSE, then no installation is performed.94 *95 * If this is TRUE, @ref CPU_ALLOCATE_INTERRUPT_STACK should also be TRUE.96 *97 * Only one of @ref CPU_HAS_SOFTWARE_INTERRUPT_STACK and98 * @ref CPU_HAS_HARDWARE_INTERRUPT_STACK should be set to TRUE. It is99 * possible that both are FALSE for a particular CPU. Although it100 * is unclear what that would imply about the interrupt processing101 * procedure on that CPU.102 *103 * Port Specific Information:104 *105 * XXX document implementation including references if appropriate106 */107 #define CPU_HAS_HARDWARE_INTERRUPT_STACK TRUE108 109 /**110 * Does RTEMS allocate a dedicated interrupt stack in the Interrupt Manager?111 *112 * If TRUE, then the memory is allocated during initialization.113 * If FALSE, then the memory is allocated during initialization.114 *115 * This should be TRUE is CPU_HAS_SOFTWARE_INTERRUPT_STACK is TRUE.116 *117 * Port Specific Information:118 *119 * XXX document implementation including references if appropriate120 */121 #define CPU_ALLOCATE_INTERRUPT_STACK TRUE122 59 123 60 /** … … 410 347 /** 411 348 * @defgroup CPUInterrupt Processor Dependent Interrupt Management 412 *413 * On some CPUs, RTEMS supports a software managed interrupt stack.414 * This stack is allocated by the Interrupt Manager and the switch415 * is performed in @ref _ISR_Handler. These variables contain pointers416 * to the lowest and highest addresses in the chunk of memory allocated417 * for the interrupt stack. Since it is unknown whether the stack418 * grows up or down (in general), this give the CPU dependent419 * code the option of picking the version it wants to use.420 *421 * NOTE: These two variables are required if the macro422 * @ref CPU_HAS_SOFTWARE_INTERRUPT_STACK is defined as TRUE.423 *424 * Port Specific Information:425 *426 * XXX document implementation including references if appropriate427 *428 349 */ 429 350 /**@{**/ … … 837 758 838 759 /** 839 * @ingroup CPUInterrupt840 *841 * This routine installs the hardware interrupt stack pointer.842 *843 * NOTE: It need only be provided if @ref CPU_HAS_HARDWARE_INTERRUPT_STACK844 * is TRUE.845 *846 * Port Specific Information:847 *848 * XXX document implementation including references if appropriate849 */850 void _CPU_Install_interrupt_stack( void );851 852 /**853 760 * This routine is the CPU dependent IDLE thread body. 854 761 * -
cpukit/score/cpu/m68k/cpu.c
r715d616 r511dc4b 21 21 #include <rtems/score/percpu.h> 22 22 #include <rtems/score/tls.h> 23 #include <rtems/config.h> 23 24 24 25 #if ( M68K_HAS_VBR == 0 ) … … 58 59 uint32_t _CPU_cacr_shadow; 59 60 #endif 61 62 static void m68k_install_interrupt_stack( void ) 63 { 64 #if ( M68K_HAS_SEPARATE_STACKS == 1 ) 65 uintptr_t isp = (uintptr_t) _Configuration_Interrupt_stack_area_end; 66 67 __asm__ volatile ( "movec %0,%%isp" : "=r" (isp) : "0" (isp) ); 68 #endif 69 } 60 70 61 71 void _CPU_Initialize(void) … … 75 85 } 76 86 #endif /* M68K_HAS_VBR */ 87 88 m68k_install_interrupt_stack(); 77 89 } 78 90 … … 150 162 151 163 _ISR_Vector_table[ vector ] = new_handler; 152 }153 154 155 /*156 * _CPU_Install_interrupt_stack157 */158 159 void _CPU_Install_interrupt_stack( void )160 {161 #if ( M68K_HAS_SEPARATE_STACKS == 1 )162 void *isp = _CPU_Interrupt_stack_high;163 164 __asm__ volatile ( "movec %0,%%isp" : "=r" (isp) : "0" (isp) );165 #endif166 164 } 167 165 -
cpukit/score/cpu/m68k/cpu_asm.S
r715d616 r511dc4b 260 260 261 261 262 #if ( CPU_HAS_SOFTWARE_INTERRUPT_STACK == 1)262 #if ( M68K_HAS_SEPARATE_STACKS == 0 ) 263 263 | Make a0 point just above interrupt stack 264 264 movel INTERRUPT_STACK_HIGH,a0 … … 273 273 | on interrupt stack 274 274 2: 275 #endif /* CPU_HAS_SOFTWARE_INTERRUPT_STACK == 1*/275 #endif /* M68K_HAS_SEPARATE_STACKS == 0 */ 276 276 277 277 addql #1,ISR_NEST_LEVEL | one nest level deeper … … 286 286 subql #1,ISR_NEST_LEVEL | Reduce interrupt-nesting count 287 287 288 #if ( CPU_HAS_SOFTWARE_INTERRUPT_STACK == 1)288 #if ( M68K_HAS_SEPARATE_STACKS == 0 ) 289 289 movel INTERRUPT_STACK_HIGH,a0 290 290 subql #4,a0 … … 293 293 movel (a7),a7 | Restore task stack pointer 294 294 1: 295 #endif /* CPU_HAS_SOFTWARE_INTERRUPT_STACK == 1*/295 #endif /* M68K_HAS_SEPARATE_STACKS == 0 */ 296 296 subql #1,THREAD_DISPATCH_DISABLE_LEVEL 297 297 | unnest multitasking -
cpukit/score/cpu/m68k/include/rtems/score/cpu.h
r715d616 r511dc4b 41 41 */ 42 42 #define CPU_SIMPLE_VECTORED_INTERRUPTS TRUE 43 44 /*45 * Use the m68k's hardware interrupt stack support and have the46 * interrupt manager allocate the memory for it.47 */48 49 #if ( M68K_HAS_SEPARATE_STACKS == 1)50 #define CPU_HAS_SOFTWARE_INTERRUPT_STACK 051 #define CPU_HAS_HARDWARE_INTERRUPT_STACK 152 #else53 #define CPU_HAS_SOFTWARE_INTERRUPT_STACK 154 #define CPU_HAS_HARDWARE_INTERRUPT_STACK 055 #endif56 #define CPU_ALLOCATE_INTERRUPT_STACK 157 43 58 44 /* … … 616 602 617 603 /* 618 * _CPU_Install_interrupt_stack619 *620 * This routine installs the hardware interrupt stack pointer.621 */622 623 void _CPU_Install_interrupt_stack( void );624 625 /*626 604 * _CPU_Context_switch 627 605 * -
cpukit/score/cpu/mips/cpu.c
r715d616 r511dc4b 167 167 } 168 168 169 void _CPU_Install_interrupt_stack( void )170 {171 /* we don't support this yet */172 }173 174 169 void _CPU_Context_Initialize( 175 170 Context_Control *the_context, -
cpukit/score/cpu/mips/cpu_asm.S
r715d616 r511dc4b 873 873 * may need to save some special interrupt information for exit 874 874 * 875 * #if ( CPU_HAS_SOFTWARE_INTERRUPT_STACK == TRUE ) 876 * if ( _ISR_Nest_level == 0 ) 877 * switch to software interrupt stack 878 * #endif 875 * if ( _ISR_Nest_level == 0 ) 876 * switch to software interrupt stack 879 877 */ 880 878 … … 940 938 941 939 /* 942 * #if ( CPU_HAS_SOFTWARE_INTERRUPT_STACK == TRUE ) 943 * restore stack 944 * #endif 940 * restore stack 945 941 * 946 942 * if !_Thread_Dispatch_necessary -
cpukit/score/cpu/mips/include/rtems/score/cpu.h
r715d616 r511dc4b 63 63 64 64 /* 65 * Does RTEMS manage a dedicated interrupt stack in software?66 *67 * If TRUE, then a stack is allocated in _Interrupt_Manager_initialization.68 * If FALSE, nothing is done.69 *70 * If the CPU supports a dedicated interrupt stack in hardware,71 * then it is generally the responsibility of the BSP to allocate it72 * and set it up.73 *74 * If the CPU does not support a dedicated interrupt stack, then75 * the porter has two options: (1) execute interrupts on the76 * stack of the interrupted task, and (2) have RTEMS manage a dedicated77 * interrupt stack.78 *79 * If this is TRUE, CPU_ALLOCATE_INTERRUPT_STACK should also be TRUE.80 *81 * Only one of CPU_HAS_SOFTWARE_INTERRUPT_STACK and82 * CPU_HAS_HARDWARE_INTERRUPT_STACK should be set to TRUE. It is83 * possible that both are FALSE for a particular CPU. Although it84 * is unclear what that would imply about the interrupt processing85 * procedure on that CPU.86 */87 88 #define CPU_HAS_SOFTWARE_INTERRUPT_STACK FALSE89 90 /*91 65 * Does the CPU follow the simple vectored interrupt model? 92 66 * … … 101 75 */ 102 76 #define CPU_SIMPLE_VECTORED_INTERRUPTS FALSE 103 104 /*105 * Does this CPU have hardware support for a dedicated interrupt stack?106 *107 * If TRUE, then it must be installed during initialization.108 * If FALSE, then no installation is performed.109 *110 * If this is TRUE, CPU_ALLOCATE_INTERRUPT_STACK should also be TRUE.111 *112 * Only one of CPU_HAS_SOFTWARE_INTERRUPT_STACK and113 * CPU_HAS_HARDWARE_INTERRUPT_STACK should be set to TRUE. It is114 * possible that both are FALSE for a particular CPU. Although it115 * is unclear what that would imply about the interrupt processing116 * procedure on that CPU.117 */118 119 #define CPU_HAS_HARDWARE_INTERRUPT_STACK FALSE120 121 /*122 * Does RTEMS allocate a dedicated interrupt stack in the Interrupt Manager?123 *124 * If TRUE, then the memory is allocated during initialization.125 * If FALSE, then the memory is allocated during initialization.126 *127 * This should be TRUE is CPU_HAS_SOFTWARE_INTERRUPT_STACK is TRUE.128 */129 130 #define CPU_ALLOCATE_INTERRUPT_STACK FALSE131 77 132 78 /* … … 872 818 873 819 /* 874 * _CPU_Install_interrupt_stack875 *876 * This routine installs the hardware interrupt stack pointer.877 *878 * NOTE: It need only be provided if CPU_HAS_HARDWARE_INTERRUPT_STACK879 * is TRUE.880 */881 882 void _CPU_Install_interrupt_stack( void );883 884 /*885 820 * _CPU_Internal_threads_Idle_thread_body 886 821 * -
cpukit/score/cpu/moxie/cpu.c
r715d616 r511dc4b 106 106 107 107 /* 108 * _CPU_Install_interrupt_stack109 */110 void _CPU_Install_interrupt_stack( void )111 {112 }113 114 /*115 108 * _CPU_Thread_Idle_body 116 109 * -
cpukit/score/cpu/moxie/include/rtems/score/cpu.h
r715d616 r511dc4b 39 39 40 40 /* 41 * Does RTEMS manage a dedicated interrupt stack in software?42 *43 * If TRUE, then a stack is allocated in _ISR_Handler_initialization.44 * If FALSE, nothing is done.45 *46 * If the CPU supports a dedicated interrupt stack in hardware,47 * then it is generally the responsibility of the BSP to allocate it48 * and set it up.49 *50 * If the CPU does not support a dedicated interrupt stack, then51 * the porter has two options: (1) execute interrupts on the52 * stack of the interrupted task, and (2) have RTEMS manage a dedicated53 * interrupt stack.54 *55 * If this is TRUE, CPU_ALLOCATE_INTERRUPT_STACK should also be TRUE.56 *57 * Only one of CPU_HAS_SOFTWARE_INTERRUPT_STACK and58 * CPU_HAS_HARDWARE_INTERRUPT_STACK should be set to TRUE. It is59 * possible that both are FALSE for a particular CPU. Although it60 * is unclear what that would imply about the interrupt processing61 * procedure on that CPU.62 *63 * MOXIE Specific Information:64 *65 * XXX66 */67 #define CPU_HAS_SOFTWARE_INTERRUPT_STACK TRUE68 69 /*70 41 * Does the CPU follow the simple vectored interrupt model? 71 42 * … … 79 50 */ 80 51 #define CPU_SIMPLE_VECTORED_INTERRUPTS TRUE 81 82 /*83 * Does this CPU have hardware support for a dedicated interrupt stack?84 *85 * If TRUE, then it must be installed during initialization.86 * If FALSE, then no installation is performed.87 *88 * If this is TRUE, CPU_ALLOCATE_INTERRUPT_STACK should also be TRUE.89 *90 * Only one of CPU_HAS_SOFTWARE_INTERRUPT_STACK and91 * CPU_HAS_HARDWARE_INTERRUPT_STACK should be set to TRUE. It is92 * possible that both are FALSE for a particular CPU. Although it93 * is unclear what that would imply about the interrupt processing94 * procedure on that CPU.95 *96 * MOXIE Specific Information:97 *98 * XXX99 */100 #define CPU_HAS_HARDWARE_INTERRUPT_STACK FALSE101 102 /*103 * Does RTEMS allocate a dedicated interrupt stack in the Interrupt Manager?104 *105 * If TRUE, then the memory is allocated during initialization.106 * If FALSE, then the memory is allocated during initialization.107 *108 * This should be TRUE is CPU_HAS_SOFTWARE_INTERRUPT_STACK is TRUE.109 *110 * MOXIE Specific Information:111 *112 * XXX113 */114 #define CPU_ALLOCATE_INTERRUPT_STACK TRUE115 52 116 53 /* … … 680 617 681 618 /* 682 * _CPU_Install_interrupt_stack683 *684 * This routine installs the hardware interrupt stack pointer.685 *686 * NOTE: It need only be provided if CPU_HAS_HARDWARE_INTERRUPT_STACK687 * is TRUE.688 *689 * MOXIE Specific Information:690 *691 * XXX692 */693 void _CPU_Install_interrupt_stack( void );694 695 /*696 619 * _CPU_Internal_threads_Idle_thread_body 697 620 * -
cpukit/score/cpu/nios2/include/rtems/score/cpu.h
r715d616 r511dc4b 28 28 #include <rtems/score/nios2.h> 29 29 30 #define CPU_HAS_SOFTWARE_INTERRUPT_STACK TRUE31 32 30 #define CPU_SIMPLE_VECTORED_INTERRUPTS TRUE 33 31 … … 37 35 38 36 #define CPU_PROVIDES_ISR_IS_IN_PROGRESS TRUE 39 40 #define CPU_HAS_HARDWARE_INTERRUPT_STACK FALSE41 42 #define CPU_ALLOCATE_INTERRUPT_STACK TRUE43 37 44 38 #define CPU_ISR_PASSES_FRAME_POINTER FALSE -
cpukit/score/cpu/nios2/nios2-iic-irq.c
r715d616 r511dc4b 33 33 */ 34 34 35 #if( CPU_HAS_SOFTWARE_INTERRUPT_STACK == TRUE) 36 unsigned long *_old_stack_ptr; 37 #endif 35 unsigned long *_old_stack_ptr; 38 36 39 37 /* … … 99 97 /* Interrupts are disabled upon entry to this Handler */ 100 98 101 #if( CPU_HAS_SOFTWARE_INTERRUPT_STACK == TRUE)102 99 if ( _ISR_Nest_level == 0 ) { 103 100 /* Install irq stack */ … … 105 102 stack_ptr = _CPU_Interrupt_stack_high - 4; 106 103 } 107 #endif108 104 109 105 _ISR_Nest_level++; … … 121 117 122 118 if( _ISR_Nest_level == 0) { 123 #if( CPU_HAS_SOFTWARE_INTERRUPT_STACK == TRUE)124 119 stack_ptr = _old_stack_ptr; 125 #endif126 120 127 121 if( _Thread_Dispatch_is_enabled() ) -
cpukit/score/cpu/no_cpu/cpu.c
r715d616 r511dc4b 88 88 89 89 /* 90 * _CPU_Install_interrupt_stack91 *92 * NO_CPU Specific Information:93 *94 * XXX document implementation including references if appropriate95 */96 97 void _CPU_Install_interrupt_stack( void )98 {99 }100 101 /*102 90 * _CPU_Thread_Idle_body 103 91 * -
cpukit/score/cpu/no_cpu/cpu_asm.c
r715d616 r511dc4b 152 152 * may need to save some special interrupt information for exit 153 153 * 154 * #if ( CPU_HAS_SOFTWARE_INTERRUPT_STACK == TRUE ) 155 * if ( _ISR_Nest_level == 0 ) 156 * switch to software interrupt stack 157 * #endif 154 * if ( _ISR_Nest_level == 0 ) 155 * switch to software interrupt stack 158 156 * 159 157 * _ISR_Nest_level++; … … 179 177 * 180 178 * LABEL "exit interrupt (simple case): 181 * #if ( CPU_HAS_SOFTWARE_INTERRUPT_STACK == TRUE ) 182 * if outermost interrupt 183 * restore stack 184 * #endif 179 * if outermost interrupt 180 * restore stack 185 181 * prepare to get out of interrupt 186 182 * return from interrupt -
cpukit/score/cpu/no_cpu/include/rtems/score/cpu.h
r715d616 r511dc4b 47 47 48 48 /** 49 * Does RTEMS manage a dedicated interrupt stack in software?50 *51 * If TRUE, then a stack is allocated in @ref _ISR_Handler_initialization.52 * If FALSE, nothing is done.53 *54 * If the CPU supports a dedicated interrupt stack in hardware,55 * then it is generally the responsibility of the BSP to allocate it56 * and set it up.57 *58 * If the CPU does not support a dedicated interrupt stack, then59 * the porter has two options: (1) execute interrupts on the60 * stack of the interrupted task, and (2) have RTEMS manage a dedicated61 * interrupt stack.62 *63 * If this is TRUE, @ref CPU_ALLOCATE_INTERRUPT_STACK should also be TRUE.64 *65 * Only one of @ref CPU_HAS_SOFTWARE_INTERRUPT_STACK and66 * @ref CPU_HAS_HARDWARE_INTERRUPT_STACK should be set to TRUE. It is67 * possible that both are FALSE for a particular CPU. Although it68 * is unclear what that would imply about the interrupt processing69 * procedure on that CPU.70 *71 * Port Specific Information:72 *73 * XXX document implementation including references if appropriate74 */75 #define CPU_HAS_SOFTWARE_INTERRUPT_STACK FALSE76 77 /**78 49 * Does the CPU follow the simple vectored interrupt model? 79 50 * … … 87 58 */ 88 59 #define CPU_SIMPLE_VECTORED_INTERRUPTS TRUE 89 90 /**91 * Does this CPU have hardware support for a dedicated interrupt stack?92 *93 * If TRUE, then it must be installed during initialization.94 * If FALSE, then no installation is performed.95 *96 * If this is TRUE, @ref CPU_ALLOCATE_INTERRUPT_STACK should also be TRUE.97 *98 * Only one of @ref CPU_HAS_SOFTWARE_INTERRUPT_STACK and99 * @ref CPU_HAS_HARDWARE_INTERRUPT_STACK should be set to TRUE. It is100 * possible that both are FALSE for a particular CPU. Although it101 * is unclear what that would imply about the interrupt processing102 * procedure on that CPU.103 *104 * Port Specific Information:105 *106 * XXX document implementation including references if appropriate107 */108 #define CPU_HAS_HARDWARE_INTERRUPT_STACK TRUE109 110 /**111 * Does RTEMS allocate a dedicated interrupt stack in the Interrupt Manager?112 *113 * If TRUE, then the memory is allocated during initialization.114 * If FALSE, then the memory is allocated during initialization.115 *116 * This should be TRUE is CPU_HAS_SOFTWARE_INTERRUPT_STACK is TRUE.117 *118 * Port Specific Information:119 *120 * XXX document implementation including references if appropriate121 */122 #define CPU_ALLOCATE_INTERRUPT_STACK TRUE123 60 124 61 /** … … 522 459 * @defgroup CPUInterrupt Processor Dependent Interrupt Management 523 460 * 524 * On some CPUs, RTEMS supports a software managed interrupt stack. 525 * This stack is allocated by the Interrupt Manager and the switch 526 * is performed in @ref _ISR_Handler. These variables contain pointers 527 * to the lowest and highest addresses in the chunk of memory allocated 528 * for the interrupt stack. Since it is unknown whether the stack 529 * grows up or down (in general), this give the CPU dependent 530 * code the option of picking the version it wants to use. 531 * 532 * NOTE: These two variables are required if the macro 533 * @ref CPU_HAS_SOFTWARE_INTERRUPT_STACK is defined as TRUE. 461 * RTEMS supports a software managed interrupt stack. The interrupt stacks 462 * are statically allocated by <rtems/confdefs.h> and the switch is performed 463 * by hardware or the interrupt processing code. These variables contain 464 * pointers to the lowest and highest addresses in the chunk of memory 465 * allocated for the interrupt stack. Since it is unknown whether the stack 466 * grows up or down (in general), this give the CPU dependent code the option 467 * of picking the version it wants to use. 534 468 * 535 469 * Port Specific Information: … … 1127 1061 1128 1062 /** 1129 * @ingroup CPUInterrupt1130 * This routine installs the hardware interrupt stack pointer.1131 *1132 * NOTE: It need only be provided if @ref CPU_HAS_HARDWARE_INTERRUPT_STACK1133 * is TRUE.1134 *1135 * Port Specific Information:1136 *1137 * XXX document implementation including references if appropriate1138 */1139 void _CPU_Install_interrupt_stack( void );1140 1141 /**1142 1063 * This routine is the CPU dependent IDLE thread body. 1143 1064 * -
cpukit/score/cpu/or1k/cpu.c
r715d616 r511dc4b 106 106 } 107 107 108 void _CPU_Install_interrupt_stack( void )109 {110 }111 112 108 void *_CPU_Thread_Idle_body( uintptr_t ignored ) 113 109 { -
cpukit/score/cpu/or1k/include/rtems/score/cpu.h
r715d616 r511dc4b 39 39 40 40 /* conditional compilation parameters */ 41 42 /*43 * Does RTEMS manage a dedicated interrupt stack in software?44 *45 * If TRUE, then a stack is allocated in _ISR_Handler_initialization.46 * If FALSE, nothing is done.47 *48 * If the CPU supports a dedicated interrupt stack in hardware,49 * then it is generally the responsibility of the BSP to allocate it50 * and set it up.51 *52 * If the CPU does not support a dedicated interrupt stack, then53 * the porter has two options: (1) execute interrupts on the54 * stack of the interrupted task, and (2) have RTEMS manage a dedicated55 * interrupt stack.56 *57 * If this is TRUE, CPU_ALLOCATE_INTERRUPT_STACK should also be TRUE.58 *59 * Only one of CPU_HAS_SOFTWARE_INTERRUPT_STACK and60 * CPU_HAS_HARDWARE_INTERRUPT_STACK should be set to TRUE. It is61 * possible that both are FALSE for a particular CPU. Although it62 * is unclear what that would imply about the interrupt processing63 * procedure on that CPU.64 *65 * Currently, for or1k port, _ISR_Handler is responsible for switching to66 * RTEMS dedicated interrupt task.67 *68 */69 70 #define CPU_HAS_SOFTWARE_INTERRUPT_STACK TRUE71 72 /*73 * Does this CPU have hardware support for a dedicated interrupt stack?74 *75 * If TRUE, then it must be installed during initialization.76 * If FALSE, then no installation is performed.77 *78 * If this is TRUE, CPU_ALLOCATE_INTERRUPT_STACK should also be TRUE.79 *80 * Only one of CPU_HAS_SOFTWARE_INTERRUPT_STACK and81 * CPU_HAS_HARDWARE_INTERRUPT_STACK should be set to TRUE. It is82 * possible that both are FALSE for a particular CPU. Although it83 * is unclear what that would imply about the interrupt processing84 * procedure on that CPU.85 *86 */87 88 #define CPU_HAS_HARDWARE_INTERRUPT_STACK FALSE89 90 /*91 * Does RTEMS allocate a dedicated interrupt stack in the Interrupt Manager?92 *93 * If TRUE, then the memory is allocated during initialization.94 * If FALSE, then the memory is allocated during initialization.95 *96 * This should be TRUE is CPU_HAS_SOFTWARE_INTERRUPT_STACK is TRUE97 * or CPU_INSTALL_HARDWARE_INTERRUPT_STACK is TRUE.98 *99 */100 101 #define CPU_ALLOCATE_INTERRUPT_STACK TRUE102 41 103 42 /* … … 737 676 738 677 /* 739 * _CPU_Install_interrupt_stack740 *741 * This routine installs the hardware interrupt stack pointer.742 *743 * NOTE: It need only be provided if CPU_HAS_HARDWARE_INTERRUPT_STACK744 * is TRUE.745 *746 */747 748 void _CPU_Install_interrupt_stack( void );749 750 /*751 678 * _CPU_Thread_Idle_body 752 679 * -
cpukit/score/cpu/powerpc/include/rtems/score/cpu.h
r715d616 r511dc4b 474 474 475 475 /* 476 * Does RTEMS manage a dedicated interrupt stack in software?477 *478 * If TRUE, then a stack is allocated in _ISR_Handler_initialization.479 * If FALSE, nothing is done.480 *481 * If the CPU supports a dedicated interrupt stack in hardware,482 * then it is generally the responsibility of the BSP to allocate it483 * and set it up.484 *485 * If the CPU does not support a dedicated interrupt stack, then486 * the porter has two options: (1) execute interrupts on the487 * stack of the interrupted task, and (2) have RTEMS manage a dedicated488 * interrupt stack.489 *490 * If this is TRUE, CPU_ALLOCATE_INTERRUPT_STACK should also be TRUE.491 *492 * Only one of CPU_HAS_SOFTWARE_INTERRUPT_STACK and493 * CPU_HAS_HARDWARE_INTERRUPT_STACK should be set to TRUE. It is494 * possible that both are FALSE for a particular CPU. Although it495 * is unclear what that would imply about the interrupt processing496 * procedure on that CPU.497 */498 499 #define CPU_HAS_SOFTWARE_INTERRUPT_STACK TRUE500 501 /*502 * Does this CPU have hardware support for a dedicated interrupt stack?503 *504 * If TRUE, then it must be installed during initialization.505 * If FALSE, then no installation is performed.506 *507 * If this is TRUE, CPU_ALLOCATE_INTERRUPT_STACK should also be TRUE.508 *509 * Only one of CPU_HAS_SOFTWARE_INTERRUPT_STACK and510 * CPU_HAS_HARDWARE_INTERRUPT_STACK should be set to TRUE. It is511 * possible that both are FALSE for a particular CPU. Although it512 * is unclear what that would imply about the interrupt processing513 * procedure on that CPU.514 */515 516 #define CPU_HAS_HARDWARE_INTERRUPT_STACK FALSE517 518 /*519 * Does RTEMS allocate a dedicated interrupt stack in the Interrupt Manager?520 *521 * If TRUE, then the memory is allocated during initialization.522 * If FALSE, then the memory is allocated during initialization.523 *524 * This should be TRUE is CPU_HAS_SOFTWARE_INTERRUPT_STACK is TRUE.525 */526 527 #define CPU_ALLOCATE_INTERRUPT_STACK TRUE528 529 /*530 476 * Does the RTEMS invoke the user's ISR with the vector number and 531 477 * a pointer to the saved interrupt frame (1) or just the vector -
cpukit/score/cpu/riscv/cpu.c
r715d616 r511dc4b 111 111 } 112 112 113 void _CPU_Install_interrupt_stack( void )114 {115 /* Do nothing */116 }117 118 113 void *_CPU_Thread_Idle_body( uintptr_t ignored ) 119 114 { -
cpukit/score/cpu/riscv/include/rtems/score/cpu.h
r715d616 r511dc4b 51 51 #define CPU_INLINE_ENABLE_DISPATCH FALSE 52 52 #define CPU_UNROLL_ENQUEUE_PRIORITY TRUE 53 #define CPU_HAS_SOFTWARE_INTERRUPT_STACK TRUE54 #define CPU_HAS_HARDWARE_INTERRUPT_STACK FALSE55 #define CPU_ALLOCATE_INTERRUPT_STACK TRUE56 53 #define CPU_ISR_PASSES_FRAME_POINTER 1 57 54 #define CPU_HARDWARE_FP FALSE … … 352 349 353 350 /* 354 * _CPU_Install_interrupt_stack355 *356 * This routine installs the hardware interrupt stack pointer.357 *358 * NOTE: It need only be provided if CPU_HAS_HARDWARE_INTERRUPT_STACK359 * is TRUE.360 *361 */362 363 void _CPU_Install_interrupt_stack( void );364 365 /*366 351 * _CPU_Thread_Idle_body 367 352 * -
cpukit/score/cpu/sh/include/rtems/score/cpu.h
r715d616 r511dc4b 49 49 */ 50 50 #define CPU_SIMPLE_VECTORED_INTERRUPTS TRUE 51 52 /*53 * Does RTEMS manage a dedicated interrupt stack in software?54 *55 * If TRUE, then a stack is allocated in _ISR_Handler_initialization.56 * If FALSE, nothing is done.57 *58 * If the CPU supports a dedicated interrupt stack in hardware,59 * then it is generally the responsibility of the BSP to allocate it60 * and set it up.61 *62 * If the CPU does not support a dedicated interrupt stack, then63 * the porter has two options: (1) execute interrupts on the64 * stack of the interrupted task, and (2) have RTEMS manage a dedicated65 * interrupt stack.66 *67 * If this is TRUE, CPU_ALLOCATE_INTERRUPT_STACK should also be TRUE.68 *69 * Only one of CPU_HAS_SOFTWARE_INTERRUPT_STACK and70 * CPU_HAS_HARDWARE_INTERRUPT_STACK should be set to TRUE. It is71 * possible that both are FALSE for a particular CPU. Although it72 * is unclear what that would imply about the interrupt processing73 * procedure on that CPU.74 */75 76 #define CPU_HAS_SOFTWARE_INTERRUPT_STACK TRUE77 #define CPU_HAS_HARDWARE_INTERRUPT_STACK FALSE78 79 /*80 * We define the interrupt stack in the linker script81 */82 #define CPU_ALLOCATE_INTERRUPT_STACK FALSE83 51 84 52 /* … … 642 610 643 611 /* 644 * _CPU_Install_interrupt_stack645 *646 * This routine installs the hardware interrupt stack pointer.647 *648 * NOTE: It needs only be provided if CPU_HAS_HARDWARE_INTERRUPT_STACK649 * is TRUE.650 */651 652 void _CPU_Install_interrupt_stack( void );653 654 /*655 612 * _CPU_Thread_Idle_body 656 613 * -
cpukit/score/cpu/sparc/include/rtems/score/cpu.h
r715d616 r511dc4b 70 70 71 71 /** 72 * Does the executive manage a dedicated interrupt stack in software?73 *74 * If TRUE, then a stack is allocated in _ISR_Handler_initialization.75 * If FALSE, nothing is done.76 *77 * The SPARC does not have a dedicated HW interrupt stack and one has78 * been implemented in SW.79 */80 #define CPU_HAS_SOFTWARE_INTERRUPT_STACK TRUE81 82 /**83 72 * Does the CPU follow the simple vectored interrupt model?