Jens Axboe | 12cbb46 | 2007-12-10 20:24:44 +0100 | [diff] [blame] | 1 | #ifndef _INDIRECT_H_ |
| 2 | #define _INDIRECT_H_ |
| 3 | |
| 4 | #include "syslet.h" |
| 5 | |
| 6 | union indirect_params { |
| 7 | struct { |
| 8 | u32 flags; |
| 9 | } file_flags; |
| 10 | struct syslet_args syslet; |
| 11 | }; |
| 12 | |
| 13 | #ifdef __x86_64__ |
| 14 | # define __NR_indirect 286 |
| 15 | struct indirect_registers { |
| 16 | u64 rax; |
| 17 | u64 rdi; |
| 18 | u64 rsi; |
| 19 | u64 rdx; |
| 20 | u64 r10; |
| 21 | u64 r8; |
| 22 | u64 r9; |
| 23 | }; |
| 24 | #elif defined __i386__ |
| 25 | # define __NR_indirect 325 |
| 26 | struct indirect_registers { |
| 27 | u32 eax; |
| 28 | u32 ebx; |
| 29 | u32 ecx; |
| 30 | u32 edx; |
| 31 | u32 esi; |
| 32 | u32 edi; |
| 33 | u32 ebp; |
| 34 | }; |
| 35 | #endif |
| 36 | |
| 37 | #define FILL_IN(var, values...) \ |
| 38 | (var) = (struct indirect_registers) { values, } |
| 39 | |
| 40 | #endif |