Rizin
unix-like reverse engineering framework and cli tools
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Events Friends Macros Modules Pages
sfsyscall.h File Reference

Go to the source code of this file.

Macros

#define __sfsyscall_return(type, res)
 
#define _sfsyscall0(type, name)
 
#define _sfsyscall1(type, name, type1, arg1)
 
#define _sfsyscall2(type, name, type1, arg1, type2, arg2)
 
#define _sfsyscall3(type, name, type1, arg1, type2, arg2, type3, arg3)
 
#define _sfsyscall4(type, name, type1, arg1, type2, arg2, type3, arg3, type4, arg4)
 
#define _sfsyscall5(type, name, type1, arg1, type2, arg2, type3, arg3, type4, arg4, type5, arg5)
 
#define _sfsyscall6(type, name, type1, arg1, type2, arg2, type3, arg3, type4, arg4, type5, arg5, type6, arg6)
 

Macro Definition Documentation

◆ __sfsyscall_return

#define __sfsyscall_return (   type,
  res 
)
Value:
do { \
return (type) (res); \
} while (0)
int type
Definition: mipsasm.c:17

Definition at line 44 of file sfsyscall.h.

◆ _sfsyscall0

#define _sfsyscall0 (   type,
  name 
)
Value:
type name(void) { \
long __res; \
__asm__ volatile("###> " #name " <###\n\t" \
"syscall" \
: "=a" (__res) \
: "0" (__NR_##name) \
: "memory", "rcx", "r11", "cc" \
); \
__sfsyscall_return(type,__res); \
}
const char * name
Definition: op.c:541
Definition: z80asm.h:102

Definition at line 54 of file sfsyscall.h.

◆ _sfsyscall1

#define _sfsyscall1 (   type,
  name,
  type1,
  arg1 
)
Value:
type name(type1 arg1) { \
long __res; \
register type1 rdi asm("rdi"); \
rdi = arg1; \
asm volatile("###> " #name "(%2) <###\n\t" \
"syscall" \
: "=a" (__res) \
: "0" (__NR_##name), \
"r" (rdi) \
: "memory", "rcx", "r11", "cc" \
); \
__sfsyscall_return(type,__res); \
}

Definition at line 66 of file sfsyscall.h.

◆ _sfsyscall2

#define _sfsyscall2 (   type,
  name,
  type1,
  arg1,
  type2,
  arg2 
)
Value:
type name(type1 arg1, type2 arg2) { \
long __res; \
register type1 rdi asm("rdi"); \
register type2 rsi asm("rsi"); \
rdi = arg1; \
rsi = arg2; \
__asm__ volatile("###> " #name "(%2, %3) <###\n\t" \
"syscall" \
: "=a" (__res) \
: "0" (__NR_##name), \
"r" (rdi), \
"r" (rsi) \
: "memory", "rcx", "r11", "cc" \
); \
__sfsyscall_return(type, __res); \
}
rsi

Definition at line 81 of file sfsyscall.h.

◆ _sfsyscall3

#define _sfsyscall3 (   type,
  name,
  type1,
  arg1,
  type2,
  arg2,
  type3,
  arg3 
)
Value:
type name(type1 arg1, type2 arg2, type3 arg3) { \
long __res; \
register type1 rdi asm("rdi"); \
register type2 rsi asm("rsi"); \
register type3 rdx asm("rdx"); \
rdi = arg1; \
rsi = arg2; \
rdx = arg3; \
asm volatile("###> " #name "(%2, %3, %4) <###\n\t" \
"syscall" \
: "=a" (__res) \
: "0" (__NR_##name), \
"r" (rdi), \
"r" (rsi), \
"r" (rdx) \
: "memory", "rcx", "r11", "cc" \
); \
__sfsyscall_return(type, __res); \
}

Definition at line 99 of file sfsyscall.h.

◆ _sfsyscall4

#define _sfsyscall4 (   type,
  name,
  type1,
  arg1,
  type2,
  arg2,
  type3,
  arg3,
  type4,
  arg4 
)
Value:
type name(type1 arg1, type2 arg2, type3 arg3, type4 arg4) { \
long __res; \
register type1 rdi asm("rdi"); \
register type2 rsi asm("rsi"); \
register type3 rdx asm("rdx"); \
register type4 r10 asm("r10"); \
rdi = arg1; \
rsi = arg2; \
rdx = arg3; \
r10 = arg4; \
asm volatile("###> " #name "(%2, %3, %4, %5) <###\n\t" \
"syscall" \
: "=a" (__res) \
: "0" (__NR_##name), \
"r" (rdi), \
"r" (rsi), \
"r" (rdx), \
"r" (r10) \
: "memory", "rcx", "r11", "cc" \
); \
__sfsyscall_return(type, __res); \
}

Definition at line 120 of file sfsyscall.h.

◆ _sfsyscall5

#define _sfsyscall5 (   type,
  name,
  type1,
  arg1,
  type2,
  arg2,
  type3,
  arg3,
  type4,
  arg4,
  type5,
  arg5 
)
Value:
type name(type1 arg1, type2 arg2, type3 arg3, type4 arg4, \
type5 arg5) { \
long __res; \
register type1 rdi asm("rdi"); \
register type2 rsi asm("rsi"); \
register type3 rdx asm("rdx"); \
register type4 r10 asm("r10"); \
register type5 r8 asm("r8"); \
rdi = arg1; \
rsi = arg2; \
rdx = arg3; \
r10 = arg4; \
r8 = arg5; \
asm volatile("###> " #name "(%2, %3, %4, %5, %6) <###\n\t" \
"syscall" \
: "=a" (__res) \
: "0" (__NR_##name), \
"r" (rdi), \
"r" (rsi), \
"r" (rdx), \
"r" (r10), \
"r" (r8) \
: "memory", "rcx", "r11", "cc" \
); \
__sfsyscall_return(type, __res); \
}

Definition at line 144 of file sfsyscall.h.

◆ _sfsyscall6

#define _sfsyscall6 (   type,
  name,
  type1,
  arg1,
  type2,
  arg2,
  type3,
  arg3,
  type4,
  arg4,
  type5,
  arg5,
  type6,
  arg6 
)
Value:
type name(type1 arg1, type2 arg2, type3 arg3, type4 arg4, \
type5 arg5, type6 arg6) { \
long __res; \
register type1 rdi asm("rdi"); \
register type2 rsi asm("rsi"); \
register type3 rdx asm("rdx"); \
register type4 r10 asm("r10"); \
register type5 r8 asm("r8"); \
register type6 r9 asm("r9"); \
rdi = arg1; \
rsi = arg2; \
rdx = arg3; \
r10 = arg4; \
r8 = arg5; \
r9 = arg6; \
asm volatile("###> " #name "(%2, %3, %4, %5, %6, %7) <###\n\t" \
"syscall" \
: "=a" (__res) \
: "0" (__NR_##name), \
"r" (rdi), \
"r" (rsi), \
"r" (rdx), \
"r" (r10), \
"r" (r8), \
"r" (r9) \
: "memory", "rcx", "r11", "cc" \
); \
__sfsyscall_return(type, __res); \
}

Definition at line 172 of file sfsyscall.h.