X-Git-Url: https://git.ucc.asn.au/?a=blobdiff_plain;ds=sidebyside;f=Kernel%2Farch%2Farmv7%2Fproc.S;h=52dcb64aeaf09c882c2f4161933dd5e2127617b9;hb=419b7b18a70e5f65698c5eda4f62f546f02d32e4;hp=d1bb091f9490f54ef317a17f8d5953d89dfcf5c3;hpb=b1e74a3e843f44c09c9c88b42db0efba99facb13;p=tpg%2Facess2.git diff --git a/Kernel/arch/armv7/proc.S b/Kernel/arch/armv7/proc.S index d1bb091f..52dcb64a 100644 --- a/Kernel/arch/armv7/proc.S +++ b/Kernel/arch/armv7/proc.S @@ -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 @@ -61,7 +61,7 @@ SwitchTask: bx r2 .return: - push {r4-r12,pc} + pop {r4-r12,pc} .extern MM_Clone .extern MM_DumpTables @@ -79,17 +79,16 @@ Proc_CloneInt: ldr r0, =Proc_CloneInt_new pop {r4-r12,pc} Proc_CloneInt_new: - cps #18 +@ cps #18 - mov r0, #0 - mov r1, #0 - sub r1, #1 - bl MM_DumpTables +@ mov r0, #0 +@ mvn r1, #0 +@ bl MM_DumpTables -@ ldr r0, =csProc_CloneInt_NewTaskMessage -@ bl Log + ldr r0, =csProc_CloneInt_NewTaskMessage + bl Log - cps #19 +@ cps #19 mov r0, #0 pop {r4-r12,pc}