diff options
author | Benedikt Boehm <hollow@gentoo.org> | 2006-04-13 12:38:44 +0000 |
---|---|---|
committer | Benedikt Boehm <hollow@gentoo.org> | 2006-04-13 12:38:44 +0000 |
commit | 6ec7481f72eb2f3ffd92cc7da7c84515e718aedb (patch) | |
tree | 844d04f95eef18c6ab364da11a0b25e54be3b029 /util-vserver/patches/0.30.210-r12/util-vserver-0.30.210-syscall-update.patch | |
parent | Sigh, 2.0.2_rc16 and 2.1.1_rc16 (diff) | |
download | misc-6ec7481f72eb2f3ffd92cc7da7c84515e718aedb.tar.gz misc-6ec7481f72eb2f3ffd92cc7da7c84515e718aedb.tar.bz2 misc-6ec7481f72eb2f3ffd92cc7da7c84515e718aedb.zip |
remove old obsolete patches; import some of daniel_hozac's patches
svn path=/; revision=321
Diffstat (limited to 'util-vserver/patches/0.30.210-r12/util-vserver-0.30.210-syscall-update.patch')
-rw-r--r-- | util-vserver/patches/0.30.210-r12/util-vserver-0.30.210-syscall-update.patch | 244 |
1 files changed, 244 insertions, 0 deletions
diff --git a/util-vserver/patches/0.30.210-r12/util-vserver-0.30.210-syscall-update.patch b/util-vserver/patches/0.30.210-r12/util-vserver-0.30.210-syscall-update.patch new file mode 100644 index 0000000..47d07b8 --- /dev/null +++ b/util-vserver/patches/0.30.210-r12/util-vserver-0.30.210-syscall-update.patch @@ -0,0 +1,244 @@ +diff -NurpP util-vserver-0.30.210/lib/syscall-alternative.h util-vserver-0.30.210-shiny10/lib/syscall-alternative.h +--- util-vserver-0.30.210/lib/syscall-alternative.h 2005-10-28 18:33:50.000000000 +0200 ++++ util-vserver-0.30.210-shiny10/lib/syscall-alternative.h 2006-04-02 21:07:52.000000000 +0200 +@@ -1,9 +1,7 @@ +- // from http://vserver.13thfloor.at/Experimental/SYSCALL/syscall_shiny7.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 + +@@ -39,12 +37,13 @@ + __sysc_rcon(n) ... syscall register constraint + __sysc_regs ... list of input regs for clobber + __sysc_type ... register type ++ __sysc_aout ... asm code output constraint + + if all else fails + + __sc_asmload(n,N,...) ... asm code to prepare arguments + __sc_asmsysc(n,N) ... asm code to execute syscall +- __sc_asmsave(n,r,e) ... asm code to store results ++ __sc_asmsave(n) ... asm code to store results + + */ + +@@ -243,7 +242,8 @@ + sret: r0(r28) + serr: (sret >= (unsigned)-EMAXERRNO) + call: ble 0x100(%%sr2, %%r0) +- clob: r1, r2, r4, r20, r29, r31, memory ++ clob: r1, r2, (r4), r20, r29, r31, memory ++ picr: pr(r19) + */ + + #define __sysc_max_err 4095 +@@ -253,13 +253,21 @@ + ("r26", "r25", "r24", "r23", "r22", "r21") + + #define __sysc_cmd_sys "ble 0x100(%%sr2,%%r0)" +-#define __sysc_cmd_fin "ldi %0,%%r20" + +-#define __sysc_clobber __sysc_regs, \ +- "r1", "r2", "r4", "r20", "r29", "r31", "memory" ++#define __sysc_pre(n) \ ++ __pasm(n,1,1, "copy %%r19, %%r4" , ) + +-#warning syscall arch hppa not tested yet ++#define __sysc_fin(n) \ ++ __casm(n,1,1, "ldi %0,%%r20" , )\ ++ __pasm(n,1,1, "copy %%r4, %%r19" , ) + ++#ifndef __PIC__ ++#define __sysc_clobber __sysc_regs, \ ++ "r1", "r2", "r20", "r29", "r31", "memory" ++#else ++#define __sysc_clobber __sysc_regs, \ ++ "r1", "r2", "r4", "r20", "r29", "r31", "memory" ++#endif + + + /* ***************************************** +@@ -277,6 +285,7 @@ + sret: r0(eax) + serr: (sret >= (unsigned)-EMAXERRNO) + call: int 0x80 ++ picr: pr(ebx) + clob: memory + */ + +@@ -301,15 +310,18 @@ + __casm(n,6,1, "pushl %%ebp" , )\ + ""::__sc_iregs(n,__VA_ARGS__):__sysc_clobber) + ++#define __sc_asmsave(n) ++ + #define __sysc_pre(n) \ + __casm(n,6,1, "movl %%eax,%%ebp" , )\ +- __casm(n,0,1, "movl %0,%%eax" , )\ ++ __casm(n,0,1, "movl %1,%%eax" , )\ + + #define __sysc_fin(n) \ + __casm(n,6,1, "popl %%ebp" , )\ + __pasm(n,1,1, "popl %%ebx" , )\ + +-#define __sysc_clobber __sysc_regs, "eax", "memory" ++#define __sysc_aout "=a"(__res) ++#define __sysc_clobber __sysc_regs, "memory" + + + /* ***************************************** +@@ -399,8 +411,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 + + + /* ***************************************** +@@ -651,6 +698,7 @@ + #define __sysc_clobber __sysc_regs, \ + "cc", "r11", "rcx", "memory" + ++#define __sysc_aout "=a"(__res) + + #else + #error unknown kernel arch +@@ -834,7 +882,7 @@ + #define __sc_inp_def(n,value) + #endif + +-#ifndef __sysc_save ++#if !defined(__sysc_save) && !defined(__sysc_aout) + #define __sc_res_def(n,r) __sc_asm_reg(n, r); + #else + #define __sc_res_def(n,r) __sc_reg(n); +@@ -865,7 +913,6 @@ + #endif + + +- + #ifdef __sc_complex /* complex result */ + + #ifndef __sysc_errc +@@ -918,6 +965,7 @@ + return (type)(res) + #endif + ++ + #define __sc_results \ + __sc_res_def(__res, __sysc_reg_res) + +@@ -939,8 +987,13 @@ + __casm(n,3,0,"%3 ",) __casm(n,4,0,"%4 ",) __casm(n,5,0,"%5 ",) \ + __casm(n,6,0,"%6 ",) "*/" + ++#ifdef __sysc_aout ++#define __sc_dummy_save(n) ++#define __sc_asmsave(n) ++#else + #define __sc_dummy_save(n) "/* gcc dummy save " \ + __casm(n,0,0,"%0 ",) __casm(n,1,0,"%1 ",) "*/" ++#endif + + #define __comment(name) "\t/* kernel sys_" \ + #name "[" __stringify(__sc_id(name)) "] */" +@@ -1006,10 +1059,14 @@ + #endif + #endif + ++#ifndef __sysc_aout ++#define __sysc_aout ++#endif ++ + #ifndef __sc_asmsysc + #define __sc_asmsysc(n,N) __sc_asm_vol( \ + __casm(n,0,0, __sc_cmds(n,N) , )\ +- ::"i"(__sc_id(N)) : __sysc_clobber) ++ :__sysc_aout:"i"(__sc_id(N)) : __sysc_clobber) + #endif + + #ifndef __sc_asmsave +@@ -1031,33 +1088,33 @@ + + + +-#define _syscall0(type, name) \ ++#define _syscall0(type, name) \ + type name(void) \ + __sc_body(0, type, name, *) + +-#define _syscall1(type, name, type1, arg1) \ ++#define _syscall1(type, name, type1, arg1) \ + type name(type1 arg1) \ + __sc_body(1, type, name, arg1) + +-#define _syscall2(type, name, type1, arg1, type2, arg2) \ ++#define _syscall2(type, name, type1, arg1, type2, arg2) \ + type name(type1 arg1, type2 arg2) \ + __sc_body(2, type, name, arg1, arg2) + +-#define _syscall3(type, name, type1, arg1, type2, arg2, type3, arg3) \ ++#define _syscall3(type, name, type1, arg1, type2, arg2, type3, arg3) \ + type name(type1 arg1, type2 arg2, type3 arg3) \ + __sc_body(3, type, name, arg1, arg2, arg3) + +-#define _syscall4(type, name, type1, arg1, type2, arg2, type3, arg3, \ ++#define _syscall4(type, name, type1, arg1, type2, arg2, type3, arg3, \ + type4, arg4) \ + type name(type1 arg1, type2 arg2, type3 arg3, type4 arg4) \ + __sc_body(4, type, name, arg1, arg2, arg3, arg4) + +-#define _syscall5(type, name, type1, arg1, type2, arg2, type3, arg3, \ +- type4, arg4, type5, arg5) \ ++#define _syscall5(type, name, type1, arg1, type2, arg2, type3, arg3, \ ++ type4, arg4, type5, arg5) \ + type name(type1 arg1, type2 arg2, type3 arg3, type4 arg4, type5 arg5) \ + __sc_body(5, type, name, arg1, arg2, arg3, arg4, arg5) + +-#define _syscall6(type, name, type1, arg1, type2, arg2, type3, arg3, \ ++#define _syscall6(type, name, type1, arg1, type2, arg2, type3, arg3, \ + type4, arg4, type5, arg5, type6, arg6) \ + type name(type1 arg1, type2 arg2, type3 arg3, \ + type4 arg4, type5 arg5, type6 arg6) \ |