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; }
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; }
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; }