summaryrefslogtreecommitdiffstats
path: root/cpukit/score/cpu/bfin/cpu_asm.S
diff options
context:
space:
mode:
Diffstat (limited to 'cpukit/score/cpu/bfin/cpu_asm.S')
-rw-r--r--cpukit/score/cpu/bfin/cpu_asm.S28
1 files changed, 10 insertions, 18 deletions
diff --git a/cpukit/score/cpu/bfin/cpu_asm.S b/cpukit/score/cpu/bfin/cpu_asm.S
index 10d917ade7..7944550a3c 100644
--- a/cpukit/score/cpu/bfin/cpu_asm.S
+++ b/cpukit/score/cpu/bfin/cpu_asm.S
@@ -28,6 +28,7 @@
#include <rtems/score/cpu_asm.h>
#include <rtems/score/bfin.h>
#include <rtems/bfin/bfin.h>
+#include <rtems/score/percpu.h>
#define LO(con32) ((con32) & 0xFFFF)
#define HI(con32) (((con32) >> 16) & 0xFFFF)
@@ -313,12 +314,8 @@ SYM(_CPU_Context_restore):
.globl SYM(_ISR_Handler)
- .extern SYM(_CPU_Interrupt_stack_high)
- .extern SYM(_ISR_Nest_level)
- .extern SYM(_Thread_Dispatch_disable_level)
- .extern SYM(_Context_Switch_necessary)
- .extern SYM(_ISR_Signals_to_thread_executing)
SYM(_ISR_Handler):
+ .extern SYM(_Thread_Dispatch_disable_level)
/* all interrupts are disabled at this point */
/* the following few items are pushed onto the task stack for at
most one interrupt; nested interrupts will be using the interrupt
@@ -328,8 +325,8 @@ SYM(_ISR_Handler):
[--sp] = p0;
[--sp] = r1;
[--sp] = r0;
- p0.h = SYM(_ISR_Nest_level);
- p0.l = SYM(_ISR_Nest_level);
+ p0.h = ISR_NEST_LEVEL;
+ p0.l = ISR_NEST_LEVEL;
r0 = [p0];
r0 += 1;
[p0] = r0;
@@ -337,8 +334,8 @@ SYM(_ISR_Handler):
if !cc jump noStackSwitch;
/* setup interrupt stack */
r0 = sp;
- p0.h = SYM(_CPU_Interrupt_stack_high);
- p0.l = SYM(_CPU_Interrupt_stack_high);
+ p0.h = INTERRUPT_STACK_HIGH;
+ p0.l = INTERRUPT_STACK_HIGH;
sp = [p0];
[--sp] = r0;
noStackSwitch:
@@ -452,8 +449,8 @@ noHandler:
/* this disables interrupts again */
reti = [sp++];
- p0.h = SYM(_ISR_Nest_level);
- p0.l = SYM(_ISR_Nest_level);
+ p0.h = ISR_NEST_LEVEL;
+ p0.l = ISR_NEST_LEVEL;
r0 = [p0];
r0 += -1;
[p0] = r0;
@@ -473,13 +470,8 @@ noStackRestore:
if !cc jump noDispatch
/* do thread dispatch if necessary */
- p0.h = SYM(_Context_Switch_necessary);
- p0.l = SYM(_Context_Switch_necessary);
- r0 = B[p0] (Z);
- cc = r0 == 0;
- p0.h = SYM(_ISR_Signals_to_thread_executing);
- p0.l = SYM(_ISR_Signals_to_thread_executing);
- if !cc jump doDispatch
+ p0.h = DISPATCH_NEEDED;
+ p0.l = DISPATCH_NEEDED;
r0 = B[p0] (Z);
cc = r0 == 0;
if cc jump noDispatch