diff options
author | Andrew Waterman <waterman@cs.berkeley.edu> | 2014-10-31 22:40:06 -0700 |
---|---|---|
committer | Andrew Waterman <waterman@cs.berkeley.edu> | 2014-10-31 22:40:06 -0700 |
commit | 069bdd3f0d1348e079221d62bdc1bd2f1bc33841 (patch) | |
tree | a18c2dba9d724197dfb18d9faee474c350fc1b87 /pk/handlers.c | |
parent | 514adef4868460944738f39734f282dc14e4d744 (diff) | |
download | pk-069bdd3f0d1348e079221d62bdc1bd2f1bc33841.zip pk-069bdd3f0d1348e079221d62bdc1bd2f1bc33841.tar.gz pk-069bdd3f0d1348e079221d62bdc1bd2f1bc33841.tar.bz2 |
Implement draft of new calling convention
Here is the new syscall ABI:
syscall number in a7
args in a0 - a6
return value in a0
Here is the integer register map:
x0 -> x0
x1 -> ra
x2 -> sp
x3 -> tp
x4 -> gp
x5 -> t0
x6 -> t1
x7 -> t2
x8 -> s0
x9 -> s1
x10 -> a0
x11 -> a1
x12 -> a2
x13 -> a3
x14 -> a4
x15 -> a5
x16 -> a6
x17 -> a7
x18 -> s2
x19 -> s3
x20 -> s4
x21 -> s5
x22 -> s6
x23 -> s7
x24 -> s8
x25 -> s9
x26 -> s10
x27 -> s11
x28 -> t3
x29 -> t4
x30 -> t5
x31 -> t6
Diffstat (limited to 'pk/handlers.c')
-rw-r--r-- | pk/handlers.c | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/pk/handlers.c b/pk/handlers.c index 2d5356a..2b5bf22 100644 --- a/pk/handlers.c +++ b/pk/handlers.c @@ -112,8 +112,8 @@ void handle_fault_store(trapframe_t* tf) static void handle_syscall(trapframe_t* tf) { - tf->gpr[16] = do_syscall(tf->gpr[18], tf->gpr[19], tf->gpr[20], tf->gpr[21], - tf->gpr[22], tf->gpr[23], tf->gpr[16]); + tf->gpr[10] = do_syscall(tf->gpr[10], tf->gpr[11], tf->gpr[12], tf->gpr[13], + tf->gpr[14], tf->gpr[15], tf->gpr[17]); tf->epc += 4; } |