diff options
| author | Grissiom <[email protected]> | 2013-05-31 22:43:53 +0800 |
|---|---|---|
| committer | Grissiom <[email protected]> | 2013-06-05 23:21:06 +0800 |
| commit | e8bbbe67886f28db5600e6e5029cd24a48925e50 (patch) | |
| tree | b89f667ea14b1fa218c48d517d9980a6f2551db4 | |
| parent | 228a6be077a2e2f40e9cbc6f23ed232a8371e7d0 (diff) | |
cortex-r4: wrap asm functions with .asmfunc/.endasmfunc
| -rw-r--r-- | libcpu/arm/cortex-r4/context_ccs.asm | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/libcpu/arm/cortex-r4/context_ccs.asm b/libcpu/arm/cortex-r4/context_ccs.asm index dc4113f5e4..2b459f8238 100644 --- a/libcpu/arm/cortex-r4/context_ccs.asm +++ b/libcpu/arm/cortex-r4/context_ccs.asm @@ -28,18 +28,22 @@ ; * rt_base_t rt_hw_interrupt_disable(); ; */ .def rt_hw_interrupt_disable + .asmfunc rt_hw_interrupt_disable MRS r0, cpsr CPSID IF BX lr + .endasmfunc ;/* ; * void rt_hw_interrupt_enable(rt_base_t level); ; */ .def rt_hw_interrupt_enable + .asmfunc rt_hw_interrupt_enable MSR cpsr_c, r0 BX lr + .endasmfunc ;/* ; * void rt_hw_context_switch(rt_uint32 from, rt_uint32 to); @@ -47,6 +51,7 @@ rt_hw_interrupt_enable ; * r1 --> to ; */ .def rt_hw_context_switch + .asmfunc rt_hw_context_switch STMDB sp!, {lr} ; push pc (lr should be pushed in place of PC) STMDB sp!, {r0-r12, lr} ; push lr & register file @@ -88,12 +93,14 @@ __no_vfp_frame2 MSR spsr_cxsf, r4 LDMIA sp!, {r0-r12, lr, pc}^ ; pop new task r0-r12, lr & pc, copy spsr to cpsr + .endasmfunc ;/* ; * void rt_hw_context_switch_to(rt_uint32 to); ; * r0 --> to ; */ .def rt_hw_context_switch_to + .asmfunc rt_hw_context_switch_to LDR sp, [r0] ; get new task stack pointer @@ -112,12 +119,14 @@ __no_vfp_frame_to MSR spsr_cxsf, r4 LDMIA sp!, {r0-r12, lr, pc}^ ; pop new task r0-r12, lr & pc, copy spsr to cpsr + .endasmfunc ;/* ; * void rt_hw_context_switch_interrupt(rt_uint32 from, rt_uint32 to); ; */ .def rt_hw_context_switch_interrupt + .asmfunc rt_hw_context_switch_interrupt LDR r2, pintflag LDR r3, [r2] @@ -131,6 +140,7 @@ _reswitch LDR r2, ptothread ; set rt_interrupt_to_thread STR r1, [r2] BX lr + .endasmfunc .def IRQ_Handler IRQ_Handler |
