vxsys.h (867B)
1 // 2 // Definitions used within VX environments 3 // to invoke VX system calls and parent calls. 4 // 5 #ifndef _VXSYS_H_ 6 #define _VXSYS_H_ 7 8 9 // VX parent-calls take the parent-call code and flags in EAX, 10 // If the VXPC_SENDBUF flag is set, EBX points to a message to send 11 // and EDX contains the message's length in bytes. 12 // The ECX register cannot be used for call or return arguments, 13 // as it is used as a temporary by the SYSCALL instruction. 14 // All other registers are simple register arguments to the parent. 15 #define VXPCALL(a, s1, s2, r1, r2) \ 16 asm volatile("syscall" \ 17 : "=a" (a), "=b" (s1), "=d" (s2) \ 18 : "a" (a), "b" (s1), "d" (s2), "S" (r1), "D" (r2) \ 19 : "ecx"); 20 21 22 static inline void vxsetperm(void *addr, size_t size, int perm) 23 { 24 asm volatile("syscall" 25 : 26 : "a" (VXSYS_SETPERM), "b" (addr), "d" (size), "S" (perm) 27 : "ecx"); 28 } 29 30 #endif // _VXSYS_H_