Kernel/armv7 - Fixed error messages having invalid addresses
[tpg/acess2.git] / Kernel / arch / armv7 / proc.S
index 832adbd..52dcb64 100644 (file)
@@ -18,16 +18,8 @@ KernelThreadHeader:
        @ TODO: Do something with the thread pointer
        
        ldr r4, [sp],#4 @ Function
-       ldr r5, [sp],#4
-       @ Get arguments
-       sub r5, #1
-       ldrhs r0, [sp],#4
-@      suble r5, #1
-@      ldrhs r1, [sp],#4
-@      suble r5, #1
-@      ldrhs r2, [sp],#4
-@      suble r5, #1
-@      ldrhs r3, [sp],#4
+       @ Get argument
+       ldr r0, [sp],#4
 
        blx r4
        
@@ -35,6 +27,14 @@ KernelThreadHeader:
        bl Threads_Exit
        b .
 
+.globl Proc_int_DropToUser
+@ R0: User IP
+@ R1: User SP
+Proc_int_DropToUser:
+       cps #16
+       mov sp, r1
+       mov pc, r0
+
 .globl SwitchTask
 @ R0: New stack
 @ R1: Pointer to where to save old stack
@@ -42,7 +42,7 @@ KernelThreadHeader:
 @ R3: Pointer to save old IP
 @ SP+0: New address space
 SwitchTask:
-       PUSH_GPRS
+       push {r4-r12,lr}
 
        @ Save IP       
        ldr r4, =.return
@@ -51,7 +51,7 @@ SwitchTask:
        str sp, [r1]
 
        @ Only update TTBR0 if the task has an explicit address space
-       ldr r1, [sp,#0x40]
+       ldr r1, [sp,#4*10]
        tst r1, r1
        mcrne p15, 0, r1, c2, c0, 0     @ Set TTBR0 to r0
 
@@ -61,6 +61,38 @@ SwitchTask:
        bx r2
 
 .return:
-       POP_GPRS
-       bx lr
+       pop {r4-r12,pc}
+
+.extern MM_Clone
+.extern MM_DumpTables
+.globl Proc_CloneInt
+Proc_CloneInt:
+       @ R0: SP Destination
+       @ R1: Mem Destination
+       push {r4-r12,lr}
+       mov r4, r1      @ Save mem destination
+       str sp, [r0]    @ Save SP to SP dest
+
+       bl MM_Clone
+       str r0, [r4]    @ Save clone return to Mem Dest
+
+       ldr r0, =Proc_CloneInt_new
+       pop {r4-r12,pc}
+Proc_CloneInt_new:
+@      cps #18
+               
+@      mov r0, #0
+@      mvn r1, #0
+@      bl MM_DumpTables
+
+       ldr r0, =csProc_CloneInt_NewTaskMessage
+       bl Log
+       
+@      cps #19
+       mov r0, #0
+       pop {r4-r12,pc}
+
 
+.section .rodata
+csProc_CloneInt_NewTaskMessage:
+       .asciz "New task"

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