Changeset 6b781c0 in mainline for uspace/libc/arch/arm32/src/syscall.c


Ignore:
Timestamp:
2007-06-08T15:02:49Z (18 years ago)
Author:
Jakub Jermar <jakub@…>
Branches:
lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
c03ee1c
Parents:
3ee8a075
Message:

Merge arm32 into trunk.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • uspace/libc/arch/arm32/src/syscall.c

    r3ee8a075 r6b781c0  
    11/*
    2  * Copyright (c) 2005 Martin Decky
     2 * Copyright (c) 2007 Pavel Jancik
    33 * All rights reserved.
    44 *
     
    3131 */
    3232/** @file
    33   * @ingroup libcarm32 
     33 *  @brief Syscall routine.
    3434 */
    3535
    3636#include <libc.h>
    3737
     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 */
    3852sysarg_t __syscall(const sysarg_t p1, const sysarg_t p2, const sysarg_t p3,
    3953    const sysarg_t p4, const syscall_t id)
    4054{
    41         /* TODO */
    42         return 0;
     55        register sysarg_t __arm_reg_r0 asm("r0") = p1;
     56        register sysarg_t __arm_reg_r1 asm("r1") = p2;
     57        register sysarg_t __arm_reg_r2 asm("r2") = p3;
     58        register sysarg_t __arm_reg_r3 asm("r3") = p4;
     59        register sysarg_t __arm_reg_r4 asm("r4") = id;
     60
     61        asm volatile ( "swi"
     62                : "=r" (__arm_reg_r0)
     63                : "r"  (__arm_reg_r0),
     64                  "r"  (__arm_reg_r1),
     65                  "r"  (__arm_reg_r2),
     66                  "r"  (__arm_reg_r3),
     67                  "r"  (__arm_reg_r4)
     68        );
     69
     70        return __arm_reg_r0;
    4371}
    4472
Note: See TracChangeset for help on using the changeset viewer.