diff -NurpP util-vserver-0.30.209/lib/syscall-alternative.h util-vserver-0.30.209-mips/lib/syscall-alternative.h --- util-vserver-0.30.209/lib/syscall-alternative.h 2005-10-28 18:33:50 +0200 +++ util-vserver-0.30.209-mips/lib/syscall-alternative.h 2006-01-06 18:42:05 +0100 @@ -1,9 +1,9 @@ - // from http://vserver.13thfloor.at/Experimental/SYSCALL/syscall_shiny7.h + // from http://vserver.13thfloor.at/Experimental/SYSCALL/syscall_shiny8.h #ifndef __SYSCALL_NEW_H #define __SYSCALL_NEW_H -/* Copyright (C) 2005 Herbert Pötzl +/* Copyright (C) 2005-2006 Herbert Pötzl global config options @@ -399,8 +399,43 @@ #elif defined(__mips__) -#error syscall arch mips not implemented yet +/* The ABIO32 calling convention uses a0-a3 to pass the first + four arguments, the rest is passed on the userspace stack. The 5th arg + starts at 16($sp). + + ABIN32 and ABI64 pass 6 args in a0-a3, t0-t1. + + scnr: id(v0) + args: a1(a0), a2(a1), a3(a2), a4(a3), a5(16($sp)), a6(20($sp)) + sret: r0(v0) + serr: e0(a3) + call: syscall + clob: at, v0, t0-t7, t8-t9 +*/ + +#define __sysc_reg_cid "v0" +#define __sysc_reg_ret "v0" +#define __sysc_reg_err "a3" +#define __sysc_cmd_sys "syscall" +#define __sysc_reg(n) __arg_##n\ + ("a0","a1","a2","a3", "t0", "t1") + +#define __sysc_clobber "$1", "$3", "$8", "$9", "$10", "$11", "$12", \ + "$13", "$14", "$15", "$24", "$25", "memory" + +#if _MIPS_SIM == _ABIO32 +#define __sysc_pre(n) \ + __casm(n,5,1,"addiu $sp,$sp,-32",) \ + __casm(n,6,1,"sw $9,20($sp)",) \ + __casm(n,5,1,"sw $8, 16($sp)",) +#define __sysc_fin(n) \ + __casm(n,5,1,"addiu $sp,$sp,32",) +#elif (_MIPS_SIM == _ABIN32) || (_MIPS_SIM == _ABI64) +#warning syscall arch mips with ABI N32 and 64 not tested yet +#else +#error unknown mips ABI version +#endif /* ***************************************** diff -NurpP util-vserver-0.30.209/lib/syscall-fallback.h util-vserver-0.30.209-mips/lib/syscall-fallback.h --- util-vserver-0.30.209/lib/syscall-fallback.h 2005-10-28 18:09:27 +0200 +++ util-vserver-0.30.209-mips/lib/syscall-fallback.h 2006-01-06 18:44:12 +0100 @@ -45,7 +45,7 @@ #elif defined(__mips__) && (_MIPS_SIM == _MIPS_SIM_NABI32) #define __NR_vserver 236 #elif defined(__hppa__) -#define __NR_vserver * +#define __NR_vserver 263 #elif defined(__powerpc__) #define __NR_vserver 257 #elif defined(__s390__)