From 4392124e26e699df38cf34dbbac6baeaa243271c Mon Sep 17 00:00:00 2001 From: Pavel Pisa Date: Thu, 14 Feb 2019 00:42:42 +0100 Subject: Implemented sys_set_thread_area and sys_writev syscalls. The example Linux program compiled against musl library reaches main and displays printf output. Signed-off-by: Pavel Pisa --- qtmips_osemu/ossyscall.h | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) (limited to 'qtmips_osemu/ossyscall.h') diff --git a/qtmips_osemu/ossyscall.h b/qtmips_osemu/ossyscall.h index f2c8137..3897327 100644 --- a/qtmips_osemu/ossyscall.h +++ b/qtmips_osemu/ossyscall.h @@ -47,6 +47,13 @@ namespace osemu { +#define OSSYCALL_HANDLER_DECLARE(name) \ +int name(std::uint32_t &result, machine::Core *core, \ + std::uint32_t syscall_num, \ + std::uint32_t a1, std::uint32_t a2, std::uint32_t a3, \ + std::uint32_t a4, std::uint32_t a5, std::uint32_t a6, \ + std::uint32_t a7, std::uint32_t a8) + class OsSyscallExceptionHandler : public machine::ExceptionHandler { Q_OBJECT public: @@ -54,14 +61,13 @@ public: machine::ExceptionCause excause, std::uint32_t inst_addr, std::uint32_t next_addr, std::uint32_t jump_branch_pc, bool in_delay_slot, std::uint32_t mem_ref_addr); - int syscall_default_handler(std::uint32_t &result, machine::Core *core, - std::uint32_t syscall_num, - std::uint32_t a1, std::uint32_t a2, std::uint32_t a3, - std::uint32_t a4, std::uint32_t a5, std::uint32_t a6, - std::uint32_t a7, std::uint32_t a8); - + OSSYCALL_HANDLER_DECLARE(syscall_default_handler); + OSSYCALL_HANDLER_DECLARE(do_sys_set_thread_area); + OSSYCALL_HANDLER_DECLARE(do_sys_writev); }; +#undef OSSYCALL_HANDLER_DECLARE + } #endif // OSSYCALL_H -- cgit v1.2.3