Changeset 8c408ed4 in rtems
- Timestamp:
- Jul 30, 2002, 11:20:19 PM (19 years ago)
- Branches:
- 4.10, 4.11, 4.8, 4.9, 5, master
- Children:
- f511ae23
- Parents:
- fa237002
- Location:
- c/src/lib/libbsp/arm/shared
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
c/src/lib/libbsp/arm/shared/ChangeLog
rfa237002 r8c408ed4 1 2002-07-30 Jay Monkman <jtm@smoothsmoothie.com> 2 3 * irq/irq_asm.S: ARM port works well enough to run all sptests, 4 tmtests, and ttcp. In addition to general cleanup, there 5 has been considerable optimization to interrupt disable/enable, 6 endian swapping, and context switching. 7 1 8 2002-07-17 Jay Monkman <jtm@smoothsmoothie.com> 2 9 -
c/src/lib/libbsp/arm/shared/irq/irq_asm.S
rfa237002 r8c408ed4 24 24 .globl _ISR_Handler 25 25 _ISR_Handler: 26 stmdb sp!, {r0, r1, r2, r3 } /* save regs on INT stack */26 stmdb sp!, {r0, r1, r2, r3, r12} /* save regs on INT stack */ 27 27 stmdb sp!, {lr} /* now safe to call C funcs */ 28 28 … … 43 43 /* FIXME: I'm not sure why I can't save just r12. I'm also */ 44 44 /* not sure which of r1-r3 are important. */ 45 stmdb sp!, {r0-r12}46 45 bl ExecuteITHandler 47 ldmia sp!, {r0-r12} 48 46 49 47 /* one less nest level */ 50 48 ldr r0, =_ISR_Nest_level … … 102 100 103 101 /* replace lr with address of _ISR_Dispatch */ 104 ldr lr, =_ISR_Dispatch 105 add lr, lr, #0x4 /* On entry to an ISR, the lr is */ 102 ldr lr, =_ISR_Dispatch_p_4 /* On entry to an ISR, the lr is */ 106 103 /* the return address + 4, so */ 107 104 /* we have to emulate that */ 108 ldmia sp!, {r 0} /* out with the old */105 ldmia sp!, {r1} /* out with the old */ 109 106 stmdb sp!, {lr} /* in with the new (lr) */ 110 107 111 108 112 mrs r0, spsr113 109 orr r0, r0, #0xc0 114 110 msr spsr, r0 115 111 116 112 exitit: 117 ldmia sp!, {lr} /* restore regs from INT stack */118 ldmia sp!, {r0, r1, r2, r3 }/* restore regs from INT stack */113 ldmia sp!, {lr} /* restore regs from INT stack */ 114 ldmia sp!, {r0, r1, r2, r3, r12} /* restore regs from INT stack */ 119 115 subs pc, lr, #4 /* return */ 120 116 … … 124 120 .globl _ISR_Dispatch 125 121 _ISR_Dispatch: 126 stmdb sp!, {r0-r 12,lr} /* save regs on SVC stack */127 /* (now safe to call C funcs) */128 /* we don't save lr, since */129 /* it's just going to get */130 /* overwritten */131 122 stmdb sp!, {r0-r3, r12,lr} /* save regs on SVC stack */ 123 /* (now safe to call C funcs) */ 124 /* we don't save lr, since */ 125 /* it's just going to get */ 126 /* overwritten */ 127 _ISR_Dispatch_p_4: 132 128 bl _Thread_Dispatch 133 ldmia sp!, {r0-r 12, lr}129 ldmia sp!, {r0-r3, r12, lr} 134 130 135 131 stmdb sp!, {r0-r2}
Note: See TracChangeset
for help on using the changeset viewer.