blob: 775cef2e1beeea579fb78395cd90d5a2b4983af7 [file] [log] [blame]
#include <stdio.h>
extern unsigned long call32_from_64(void *stack, void (*function)(void));
asm (".pushsection .text\n\t"
".code32\n\t"
"syscall32:\n\t"
"mov $20,%eax\n\t" // NR_getpid (32-bit)
"syscall\n\t"
"syscall32_ret:\n\t"
"ret\n\t"
".code64");
extern void syscall32(void);
static char low_stack[4096];
int main()
{
unsigned long ret = call32_from_64(low_stack, syscall32);
printf("syscall return = %ld\n", (long)ret);
return 0;
}