diff --git a/deps/gbastartup/CMakeLists.txt b/deps/gbastartup/CMakeLists.txt index fef3fe5d..5d729e2a 100644 --- a/deps/gbastartup/CMakeLists.txt +++ b/deps/gbastartup/CMakeLists.txt @@ -1,12 +1,12 @@ enable_language(C ASM) add_library( - GbaStartup + GbaStartup OBJECT gba_crt0.s cstartup.cpp ) target_link_libraries( - GbaStartup + GbaStartup PUBLIC OxStd ) diff --git a/deps/gbastartup/cstartup.cpp b/deps/gbastartup/cstartup.cpp index bca8c639..7ccccfdc 100644 --- a/deps/gbastartup/cstartup.cpp +++ b/deps/gbastartup/cstartup.cpp @@ -1,5 +1,5 @@ /* - * Copyright 2016 - 2020 gary@drinkingtea.net + * Copyright 2016 - 2021 gary@drinkingtea.net * * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this @@ -9,21 +9,13 @@ #include #include -#pragma GCC diagnostic push -#pragma GCC diagnostic ignored "-Wpedantic" +#define MEM_EWRAM_BEGIN ox::bit_cast(0x02000000) +#define MEM_EWRAM_END ox::bit_cast(0x0203FFFF) -// this warning is too dumb to realize that it can actually confirm the hard -// coded address aligns with the requirement of HeapSegment, so it must be -// suppressed -#pragma GCC diagnostic ignored "-Wcast-align" - -#define MEM_EWRAM_BEGIN reinterpret_cast(0x02000000) -#define MEM_EWRAM_END reinterpret_cast(0x0203FFFF) - -#define HEAP_BEGIN reinterpret_cast(MEM_EWRAM_BEGIN) +#define HEAP_BEGIN ox::bit_cast(MEM_EWRAM_BEGIN) // set size to half of EWRAM #define HEAP_SIZE ((MEM_EWRAM_END - MEM_EWRAM_BEGIN) / 2) -#define HEAP_END reinterpret_cast(MEM_EWRAM_BEGIN + HEAP_SIZE) +#define HEAP_END ox::bit_cast(MEM_EWRAM_BEGIN + HEAP_SIZE) extern void (*__preinit_array_start[]) (void); extern void (*__preinit_array_end[]) (void); @@ -47,10 +39,11 @@ void __libc_init_array() { int c_start() { const char *args[2] = {"", "rom.oxfs"}; - ox::heapmgr::initHeap(ox::bit_cast(HEAP_BEGIN), ox::bit_cast(HEAP_END)); + ox::heapmgr::initHeap(HEAP_BEGIN, HEAP_END); +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wpedantic" return main(2, args); -} - -} - #pragma GCC diagnostic pop +} + +}