Kernel/ARMv7 - Hacky (non-atomic) sync_and_fetch_4
[tpg/acess2.git] / KernelLand / Kernel / arch / armv7 / proc.S
index 8711dee..d794f55 100644 (file)
@@ -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

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