Browse Source

rm48x50: optimize context_switch_interrupt_do

Substitude STMFD, MOV, ADD with STMFD, SUB. It reduce one instruction.
Tested on board and it works like a charm.
Grissiom 12 years ago
parent
commit
3d0647efb3
1 changed files with 3 additions and 3 deletions
  1. 3 3
      libcpu/arm/rm48x50/context_ccs.asm

+ 3 - 3
libcpu/arm/rm48x50/context_ccs.asm

@@ -127,9 +127,9 @@ rt_hw_context_switch_interrupt_do
     STR     r1,  [r0]
 
     LDMFD   sp!, {r0-r12,lr}  ; reload saved registers
-    STMFD   sp!, {r0-r3}      ; save r0-r3
-    MOV     r1,  sp
-    ADD     sp,  sp, #16      ; restore sp
+    STMFD   sp, {r0-r3}       ; save r0-r3. We will restore r0-r3 in the SVC
+                              ; mode so there is no need to update SP.
+    SUB     r1,  sp, #16      ; save the right SP value in r1, so we could restore r0-r3.
     SUB     r2,  lr, #4       ; save old task's pc to r2
 
     MRS     r3,  spsr         ; get cpsr of interrupt thread