git.ucc.asn.au
/
tpg
/
acess2.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Kernel/armv7 - Implementing COW
[tpg/acess2.git]
/
Kernel
/
arch
/
armv7
/
proc.S
diff --git
a/Kernel/arch/armv7/proc.S
b/Kernel/arch/armv7/proc.S
index
f62100e
..
44ce9ee
100644
(file)
--- 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
@ 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
blx r4
@@
-62,6
+54,8
@@
SwitchTask:
ldr r1, [sp,#4*10]
tst r1, r1
mcrne p15, 0, r1, c2, c0, 0 @ Set TTBR0 to r0
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 @ Invalidate all (HACK! But it fixes things)
@ Restore SP
mov sp, r0
@ Restore SP
mov sp, r0
@@
-87,17
+81,16
@@
Proc_CloneInt:
ldr r0, =Proc_CloneInt_new
pop {r4-r12,pc}
Proc_CloneInt_new:
ldr r0, =Proc_CloneInt_new
pop {r4-r12,pc}
Proc_CloneInt_new:
-
cps #18
+
@
cps #18
@ mov r0, #0
@ mov r0, #0
-@ mov r1, #0
-@ sub r1, #1
+@ mvn r1, #0
@ bl MM_DumpTables
@ ldr r0, =csProc_CloneInt_NewTaskMessage
@ bl Log
@ bl MM_DumpTables
@ ldr r0, =csProc_CloneInt_NewTaskMessage
@ bl Log
-
cps #19
+
@
cps #19
mov r0, #0
pop {r4-r12,pc}
mov r0, #0
pop {r4-r12,pc}
UCC
git Repository :: git.ucc.asn.au