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:
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
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