Subversion Repositories HelenOS

Rev

Rev 2347 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 2347 Rev 2350
Line 28... Line 28...
28
 
28
 
29
/** @addtogroup libcarm32
29
/** @addtogroup libcarm32
30
 * @{
30
 * @{
31
 */
31
 */
32
/** @file
32
/** @file
33
  * @ingroup libcarm32 
33
 *  @brief Syscall routine.
34
 */
34
 */
35
 
35
 
36
#include <libc.h>
36
#include <libc.h>
37
 
37
 
-
 
38
 
-
 
39
/** Syscall routine.
-
 
40
 *
-
 
41
 *  Stores p1-p4, id to r0-r4 registers and calls <code>swi</code>
-
 
42
 *  instruction. Returned value is read from r0 register.
-
 
43
 *
-
 
44
 *  @param p1 Parameter 1.
-
 
45
 *  @param p2 Parameter 2.
-
 
46
 *  @param p3 Parameter 3.
-
 
47
 *  @param p4 Parameter 4.
-
 
48
 *  @param id Number of syscall.
-
 
49
 *
-
 
50
 *  @return Syscall return value.
-
 
51
 */
38
sysarg_t __syscall(const sysarg_t p1, const sysarg_t p2, const sysarg_t p3,
52
sysarg_t __syscall(const sysarg_t p1, const sysarg_t p2, const sysarg_t p3,
39
    const sysarg_t p4, const syscall_t id)
53
    const sysarg_t p4, const syscall_t id)
40
{
54
{
41
    register sysarg_t __arm_reg_r0 asm("r0") = p1;
55
    register sysarg_t __arm_reg_r0 asm("r0") = p1;
42
    register sysarg_t __arm_reg_r1 asm("r1") = p2;
56
    register sysarg_t __arm_reg_r1 asm("r1") = p2;
Line 51... Line 65...
51
          "r"  (__arm_reg_r2),
65
          "r"  (__arm_reg_r2),
52
          "r"  (__arm_reg_r3),
66
          "r"  (__arm_reg_r3),
53
          "r"  (__arm_reg_r4)
67
          "r"  (__arm_reg_r4)
54
    );
68
    );
55
 
69
 
56
    return __arm_reg_r0; }
70
    return __arm_reg_r0;
-
 
71
}
57
 
72
 
58
/** @}
73
/** @}
59
 */
74
 */