Esempio n. 1
0
int
machine_syscall(HAL_SavedRegisters *regs)
{
    int res, err;
    err = _bsp_do_syscall(regs->d[0], // Function
                          regs->d[1], regs->d[2], regs->d[3], 0, // arguments,
                          &res);
    regs->d[0] = res;
    regs->pc += 4;  // Advance PC
    return err;
}
Esempio n. 2
0
int
machine_syscall(HAL_SavedRegisters *regs)
{
    int res, err;
    target_register_t d0, d1, d2, d3;

    d0 = get_register(D0);
    d1 = get_register(D1);
    d2 = get_register(D2);
    d3 = get_register(D3);

    err = _bsp_do_syscall(d0, // Function
                          d1, d2, d3, 0, // arguments,
                          &res);
    if (err)
    {
        // This was a syscall.  It has now been handled, so update the registers appropriately
        put_register(D0, res);
        bsp_skip_instruction(regs);
    }

    return err;
}
Esempio n. 3
0
int
machine_syscall(HAL_SavedRegisters *regs)
{
    int res, err;
    target_register_t a0, a1, a2, a3;

    a0 = get_register(REG_A0);
    a1 = get_register(REG_A1);
    a2 = get_register(REG_A2);
    a3 = get_register(REG_A3);

    err = _bsp_do_syscall(a0, // Function
                          a1, a2, a3, 0, // arguments,
                          &res);
    if (err)
    {
        // This was a syscall.  It has now been handled, so update the registers appropriately
        put_register(REG_V0, res);
        bsp_skip_instruction(regs);
    }

    return err;
}