From 069bdd3f0d1348e079221d62bdc1bd2f1bc33841 Mon Sep 17 00:00:00 2001 From: Andrew Waterman Date: Fri, 31 Oct 2014 22:40:06 -0700 Subject: 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 --- pk/handlers.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'pk/handlers.c') 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; } -- cgit v1.1