X-Git-Url: https://git.ucc.asn.au/?a=blobdiff_plain;f=KernelLand%2FKernel%2Farch%2Farmv7%2Fproc.S;h=d794f550efac825b6e1815c51da3b387c5a9e38a;hb=e0eb592032e8b530bf2189fc9562242ba6c61eef;hp=8711dee691eeea3e9cb09918dd35089bb9533a6f;hpb=51ab5f489bc356940c95cc936fd0508e8f07ea97;p=tpg%2Facess2.git diff --git a/KernelLand/Kernel/arch/armv7/proc.S b/KernelLand/Kernel/arch/armv7/proc.S index 8711dee6..d794f550 100644 --- a/KernelLand/Kernel/arch/armv7/proc.S +++ b/KernelLand/Kernel/arch/armv7/proc.S @@ -49,9 +49,8 @@ SwitchTask: # 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