Fix clean all script for renamed armv7 arch
[tpg/acess2.git] / Kernel / arch / armv7 / proc.S
index 841764b..832adbd 100644 (file)
@@ -6,39 +6,7 @@
  * - Process management assembly
  */
 
-#define PUSH_GPRS \
-       str r0, [sp,#-1*4];\
-       str r1, [sp,#-2*4];\
-       str r2, [sp,#-3*4];\
-       str r3, [sp,#-4*4];\
-       str r4, [sp,#-5*4];\
-       str r5, [sp,#-6*4];\
-       str r6, [sp,#-7*4];\
-       str r7, [sp,#-8*4];\
-       str r8, [sp,#-9*4];\
-       str r9, [sp,#-10*4];\
-       str r10, [sp,#-11*4];\
-       str r11, [sp,#-12*4];\
-       str r12, [sp,#-13*4];\
-       str sp, [sp,#-14*4];\
-       str lr, [sp,#-15*4];\
-       sub sp, #16*4
-
-#define POP_GPRS add sp, #16*4; \
-       ldr r0, [sp,#-1*4]; \
-       ldr r1, [sp,#-2*4]; \
-       ldr r2, [sp,#-3*4]; \
-       ldr r3, [sp,#-4*4]; \
-       ldr r4, [sp,#-5*4]; \
-       ldr r5, [sp,#-6*4]; \
-       ldr r6, [sp,#-7*4]; \
-       ldr r7, [sp,#-8*4]; \
-       ldr r8, [sp,#-9*4]; \
-       ldr r9, [sp,#-10*4]; \
-       ldr r10, [sp,#-11*4]; \
-       ldr r11, [sp,#-12*4]; \
-       ldr r12, [sp,#-13*4]; \
-       ldr lr, [sp,#-15*4];
+#include "include/assembly.h"
 
 .globl KernelThreadHeader
 @ SP+12: Argument 1
@@ -54,15 +22,14 @@ KernelThreadHeader:
        @ Get arguments
        sub r5, #1
        ldrhs r0, [sp],#4
-       sub r5, #1
-       ldrhs r1, [sp],#4
-       sub r5, #1
-       ldrhs r2, [sp],#4
-       sub r5, #1
-       ldrhs r3, [sp],#4
+@      suble r5, #1
+@      ldrhs r1, [sp],#4
+@      suble r5, #1
+@      ldrhs r2, [sp],#4
+@      suble r5, #1
+@      ldrhs r3, [sp],#4
 
-       mov lr, pc
-       mov pc, r4
+       blx r4
        
        ldr r0, =0
        bl Threads_Exit
@@ -76,18 +43,22 @@ KernelThreadHeader:
 @ SP+0: New address space
 SwitchTask:
        PUSH_GPRS
-       
+
+       @ Save IP       
        ldr r4, =.return
        str r4, [r3]
+       @ Save SP
        str sp, [r1]
-       mov r0, sp
-       
+
        @ Only update TTBR0 if the task has an explicit address space
-       ldr r0, [sp,#0x40]
-       tst r0, r0
-       mcrne p15, 0, r0, c2, c0, 0     @ Set TTBR0 to r0
+       ldr r1, [sp,#0x40]
+       tst r1, r1
+       mcrne p15, 0, r1, c2, c0, 0     @ Set TTBR0 to r0
+
+       @ Restore SP
+       mov sp, r0
 
-       mov pc, r2
+       bx r2
 
 .return:
        POP_GPRS

UCC git Repository :: git.ucc.asn.au