From c8f9dbd494732c43d5b3626ba7010bf27d1f7664 Mon Sep 17 00:00:00 2001 From: Xavier Del Campo Romero Date: Sun, 6 Jul 2025 22:09:19 +0200 Subject: Move PS1-specific files to subdirectory --- src/CMakeLists.txt | 18 +++++-------- src/playstation.x | 72 -------------------------------------------------- src/ps1/CMakeLists.txt | 5 ++++ src/ps1/playstation.x | 72 ++++++++++++++++++++++++++++++++++++++++++++++++++ src/ps1/start.c | 10 +++++++ src/ps1/system.cnf | 4 +++ src/start.c | 10 ------- src/system.cnf | 4 --- 8 files changed, 97 insertions(+), 98 deletions(-) delete mode 100644 src/playstation.x create mode 100644 src/ps1/CMakeLists.txt create mode 100644 src/ps1/playstation.x create mode 100644 src/ps1/start.c create mode 100644 src/ps1/system.cnf delete mode 100644 src/start.c delete mode 100644 src/system.cnf (limited to 'src') diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 419f60e..7420122 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -15,13 +15,7 @@ # along with this program. If not, see . add_subdirectory(nanowasm) - -if(PS1_BUILD) - add_subdirectory(libc) - target_link_libraries(nanowasm PRIVATE c) - target_link_libraries(${PROJECT_NAME} PRIVATE c) - target_sources(${PROJECT_NAME} PRIVATE start.c) -endif() +target_link_libraries(${PROJECT_NAME} PRIVATE nanowasm) # Avoid C11 since it is not supported by the i386-mingw32 toolchain. set(cflags ${cflags} -Wall -ffunction-sections -fdata-sections -pedantic) @@ -32,6 +26,11 @@ set(components set(interfaces ) +if(PS1_BUILD) + add_subdirectory(libc) + add_subdirectory(ps1) +endif() + target_compile_options(${PROJECT_NAME} PUBLIC ${cflags}) target_compile_options(nanowasm PUBLIC ${cflags}) # Dependencies for main.c @@ -56,8 +55,3 @@ foreach(i ${interfaces}) endforeach() target_link_options(${PROJECT_NAME} PRIVATE -Wl,--gc-sections) - -if(PS1_BUILD) - target_link_options(${PROJECT_NAME} PRIVATE - -T${CMAKE_CURRENT_LIST_DIR}/playstation.x) -endif() diff --git a/src/playstation.x b/src/playstation.x deleted file mode 100644 index 00a1a74..0000000 --- a/src/playstation.x +++ /dev/null @@ -1,72 +0,0 @@ -/* - * Linker script to generate an ELF file - * that has to be converted to PS-X EXE. - */ - -TARGET("elf32-littlemips") -OUTPUT_ARCH("mips") -ENTRY(_start) -INPUT(-lgcc) - -SECTIONS -{ - . = 0x80010000; - - .text ALIGN(4) : - { - *(.text.startup) - *(.text*) - } - - .rodata ALIGN(4) : - { - *(.rodata) - } - - .data ALIGN(4) : - { - *(.data) - } - - .ctors ALIGN(4) : - { - *(.ctors) - } - - .dtors ALIGN(4) : - { - *(.dtors) - } - - .bss ALIGN(4) : - { - *(.bss) - *(.bss.*) - *(.gnu.linkonce.b.*) - *(COMMON) - *(.sbss) - *(.sbss.*) - *(.gnu.linkonce.sb.*) - *(.scommon) - } - - __text_start = ADDR(.text); - __text_end = ADDR(.text) + SIZEOF(.text); - - __rodata_start = ADDR(.rodata); - __rodata_end = ADDR(.rodata) + SIZEOF(.rodata); - - __data_start = ADDR(.data); - __data_end = ADDR(.data) + SIZEOF(.data); - - __ctor_list = ADDR(.ctors); - __ctor_end = ADDR(.ctors) + SIZEOF(.ctors); - - __dtor_list = ADDR(.dtors); - __dtor_end = ADDR(.dtors) + SIZEOF(.dtors); - - __bss_start = ADDR(.bss); - __bss_end = ADDR(.bss) + SIZEOF(.bss); - - __scratchpad = 0x1f800000; -} diff --git a/src/ps1/CMakeLists.txt b/src/ps1/CMakeLists.txt new file mode 100644 index 0000000..6ba4543 --- /dev/null +++ b/src/ps1/CMakeLists.txt @@ -0,0 +1,5 @@ +target_link_libraries(${PROJECT_NAME} PRIVATE c) +target_link_libraries(nanowasm PRIVATE c) +target_sources(${PROJECT_NAME} PRIVATE start.c) +target_link_options(${PROJECT_NAME} PRIVATE + -T${CMAKE_CURRENT_LIST_DIR}/playstation.x) diff --git a/src/ps1/playstation.x b/src/ps1/playstation.x new file mode 100644 index 0000000..00a1a74 --- /dev/null +++ b/src/ps1/playstation.x @@ -0,0 +1,72 @@ +/* + * Linker script to generate an ELF file + * that has to be converted to PS-X EXE. + */ + +TARGET("elf32-littlemips") +OUTPUT_ARCH("mips") +ENTRY(_start) +INPUT(-lgcc) + +SECTIONS +{ + . = 0x80010000; + + .text ALIGN(4) : + { + *(.text.startup) + *(.text*) + } + + .rodata ALIGN(4) : + { + *(.rodata) + } + + .data ALIGN(4) : + { + *(.data) + } + + .ctors ALIGN(4) : + { + *(.ctors) + } + + .dtors ALIGN(4) : + { + *(.dtors) + } + + .bss ALIGN(4) : + { + *(.bss) + *(.bss.*) + *(.gnu.linkonce.b.*) + *(COMMON) + *(.sbss) + *(.sbss.*) + *(.gnu.linkonce.sb.*) + *(.scommon) + } + + __text_start = ADDR(.text); + __text_end = ADDR(.text) + SIZEOF(.text); + + __rodata_start = ADDR(.rodata); + __rodata_end = ADDR(.rodata) + SIZEOF(.rodata); + + __data_start = ADDR(.data); + __data_end = ADDR(.data) + SIZEOF(.data); + + __ctor_list = ADDR(.ctors); + __ctor_end = ADDR(.ctors) + SIZEOF(.ctors); + + __dtor_list = ADDR(.dtors); + __dtor_end = ADDR(.dtors) + SIZEOF(.dtors); + + __bss_start = ADDR(.bss); + __bss_end = ADDR(.bss) + SIZEOF(.bss); + + __scratchpad = 0x1f800000; +} diff --git a/src/ps1/start.c b/src/ps1/start.c new file mode 100644 index 0000000..09ca6c9 --- /dev/null +++ b/src/ps1/start.c @@ -0,0 +1,10 @@ +__attribute__((__section__(".text.startup"))) void _start(void) +{ + int main(void); + extern char *__bss_start, *__bss_end; + + for (char *s = __bss_start; s < __bss_end; s++) + *s = 0; + + main(); +} diff --git a/src/ps1/system.cnf b/src/ps1/system.cnf new file mode 100644 index 0000000..716bb6c --- /dev/null +++ b/src/ps1/system.cnf @@ -0,0 +1,4 @@ +BOOT = cdrom:\wanix.exe;1 +TCB = 4 +EVENT = 8 +STACK = 801FF800 diff --git a/src/start.c b/src/start.c deleted file mode 100644 index 09ca6c9..0000000 --- a/src/start.c +++ /dev/null @@ -1,10 +0,0 @@ -__attribute__((__section__(".text.startup"))) void _start(void) -{ - int main(void); - extern char *__bss_start, *__bss_end; - - for (char *s = __bss_start; s < __bss_end; s++) - *s = 0; - - main(); -} diff --git a/src/system.cnf b/src/system.cnf deleted file mode 100644 index 716bb6c..0000000 --- a/src/system.cnf +++ /dev/null @@ -1,4 +0,0 @@ -BOOT = cdrom:\wanix.exe;1 -TCB = 4 -EVENT = 8 -STACK = 801FF800 -- cgit v1.2.3