X-Git-Url: https://git.ucc.asn.au/?a=blobdiff_plain;f=KernelLand%2FKernel%2Farch%2Farmv7%2Fproc.S;h=d794f550efac825b6e1815c51da3b387c5a9e38a;hb=ac3028884d3c109359bc20369391adba7dab4ba9;hp=531de2997a74b34a4f4593499064395f41346638;hpb=48743e39650eb1ef988380e9d95f27fd40d3a9ce;p=tpg%2Facess2.git diff --git a/KernelLand/Kernel/arch/armv7/proc.S b/KernelLand/Kernel/arch/armv7/proc.S index 531de299..d794f550 100644 --- a/KernelLand/Kernel/arch/armv7/proc.S +++ b/KernelLand/Kernel/arch/armv7/proc.S @@ -46,12 +46,11 @@ SwitchTask: ldr r1, [sp,#4*10] tst r1, r1 mcrne p15, 0, r1, c2, c0, 0 @ Set TTBR0 to r0 - mov r1, #0 - mcrne p15, 0, r1, c8, c7, 0 @ TLBIALL - Invalidate all +# mov r1, #1 + mcrne p15, 0, r1, c8, c7, 0 @ TLBIALL - Invalid user space - @ Restore SP + @ Restore state mov sp, r0 - bx r2 .return: @@ -63,10 +62,12 @@ SwitchTask: Proc_CloneInt: @ R0: SP Destination @ R1: Mem Destination + @ R2: Clear user space push {r4-r12,lr} mov r4, r1 @ Save mem destination str sp, [r0] @ Save SP to SP dest + mov r0, r2 bl MM_Clone str r0, [r4] @ Save clone return to Mem Dest @@ -96,9 +97,20 @@ Proc_int_DropToUser: cps #16 mov sp, r1 mov pc, r0 +.globl User_Signal_Kill +@ R0: Signal +User_Signal_Kill: + mov r1, r0 + and r1, #0x00FF + orr r1, #0x0200 + mov r0, #0 + swi 0 + b . .section .rodata csProc_CloneInt_NewTaskMessage: .asciz "New task PC=%p, R4=%p, sp=%p" csProc_CloneInt_OldTaskMessage: .asciz "Parent task PC=%p, R4=%p, SP=%p" + +@ vim: ft=armv7