POK
syscall.c
1 /*
2  * POK header
3  *
4  * The following file is a part of the POK project. Any modification should
5  * made according to the POK licence. You CANNOT use this file or a part of
6  * this file is this part of a file for your own project
7  *
8  * For more information on the POK licence, please see our LICENCE FILE
9  *
10  * Please follow the coding guidelines described in doc/CODING_GUIDELINES
11  *
12  * Copyright (c) 2007-2009 POK team
13  *
14  * Created by julien on Thu Jan 15 23:34:13 2009
15  */
16 
17 
18 #include <core/syscall.h>
19 #include <types.h>
20 
21 pok_ret_t pok_do_syscall (pok_syscall_id_t syscall_id, pok_syscall_args_t* args)
22 {
23  pok_ret_t ret;
24  uint32_t args_addr;
25  uint32_t id;
26 
27  args_addr = (uint32_t) args;
28  id = (uint32_t) syscall_id;
29 
30  asm volatile ( "movl %1,%%eax \n\t"
31  "movl %2,%%ebx \n\t"
32  "int $42 \n\t"
33  "movl %%eax, %0"
34  :"=g"(ret)
35  :"g"(id), "g"(args_addr)
36  : "%eax" , "%ebx"
37  );
38  return ret;
39 }
40