From 9722873b8f3ef06c8dd729fcb5ab703433d0d677 Mon Sep 17 00:00:00 2001 From: Babz Date: Thu, 2 Sep 2021 19:02:54 +0200 Subject: [PATCH] add syscalls --- CMakeLists.txt | 6 +++++- src/syscalls.S | 36 ++++++++++++++++++++++++++++++++++++ 2 files changed, 41 insertions(+), 1 deletion(-) create mode 100644 src/syscalls.S diff --git a/CMakeLists.txt b/CMakeLists.txt index 4e3cf26..4a08903 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -3,7 +3,7 @@ cmake_minimum_required(VERSION 3.18) # replace this with your project's name -project(unshell C) +project(unshell C ASM) include(GenerateG1A) include(GenerateG3A) @@ -18,6 +18,7 @@ set(SOURCES src/main.c src/term.c src/ui.c + src/syscalls.S # ... ) # shared assets @@ -66,6 +67,9 @@ set(FLAGS -Os ) +set(ASM_OPTIONS "-x assembler-with-cpp") +set(CMAKE_ASM_FLAGS "${ASM_OPTIONS}") + fxconv_declare_assets(${ASSETS} ${ASSETS_fx} ${ASSETS_cg} WITH_METADATA) add_executable(Main ${SOURCES} ${ASSETS} ${ASSETS_${FXSDK_PLATFORM}}) diff --git a/src/syscalls.S b/src/syscalls.S new file mode 100644 index 0000000..d218e56 --- /dev/null +++ b/src/syscalls.S @@ -0,0 +1,36 @@ +.global __poweroff +.global __battery +.global __battery_type + +.section ".text" + +#define syscall(id) \ + mov.l syscall_table, r2 ;\ + mov.l 1f, r0 ;\ + jmp @r2 ;\ + nop ;\ +.align 4 ;\ +1: .long id + +#ifdef FX9860G + +syscall_table: + .long 0x80010070 + +#endif /* FX9860G */ + +#ifdef FXCG50 + +__poweroff: + syscall(0x1839) + +__battery: + syscall(0x1186) + +__battery_type: + syscall(0x12d5) + +syscall_table: + .long 0x80020070 + +#endif /* FXCG50 */