diff --git a/lib/CMakeLists.txt b/lib/CMakeLists.txt index 9b9c7ed..f0dc9df 100644 --- a/lib/CMakeLists.txt +++ b/lib/CMakeLists.txt @@ -1,4 +1,3 @@ add_subdirectory(glacier) add_subdirectory(libc) -add_subdirectory(libcxx) add_subdirectory(mammoth) diff --git a/lib/libcxx/CMakeLists.txt b/lib/libcxx/CMakeLists.txt deleted file mode 100644 index 20cf2ae..0000000 --- a/lib/libcxx/CMakeLists.txt +++ /dev/null @@ -1,15 +0,0 @@ -add_library(cxx STATIC - src/new.cpp - ) - -target_include_directories(cxx - PRIVATE ${CMAKE_CURRENT_SOURCE_DIR} - PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/include) - -target_link_libraries(cxx - c - zion_lib - ) - -set_target_properties(cxx PROPERTIES - COMPILE_FLAGS "${CMAKE_CXX_FLAGS} ${BASE_COMPILE_FLAGS}") diff --git a/lib/libcxx/include/cstddef b/lib/libcxx/include/cstddef deleted file mode 100644 index aa7d250..0000000 --- a/lib/libcxx/include/cstddef +++ /dev/null @@ -1,34 +0,0 @@ -/* vim: syntax=cpp */ - -#pragma once - -#include "cstdint" - -namespace std { - using ptrdiff_t = uint64_t; - using size_t = uint64_t; - // FIXME: I don't understand what this does. - using max_align_t = uint64_t; - using nullptr_t = decltype(nullptr); - - enum class byte : unsigned char {}; - - // byte type operations - template - constexpr byte& operator<<=(byte& b, IntType shift) noexcept; - template - constexpr byte operator<<(byte b, IntType shift) noexcept; - template - constexpr byte& operator>>=(byte& b, IntType shift) noexcept; - template - constexpr byte operator>>(byte b, IntType shift) noexcept; - constexpr byte& operator|=(byte& l, byte r) noexcept; - constexpr byte operator|(byte l, byte r) noexcept; - constexpr byte& operator&=(byte& l, byte r) noexcept; - constexpr byte operator&(byte l, byte r) noexcept; - constexpr byte& operator^=(byte& l, byte r) noexcept; - constexpr byte operator^(byte l, byte r) noexcept; - constexpr byte operator~(byte b) noexcept; - template - constexpr IntType to_integer(byte b) noexcept; -} diff --git a/lib/libcxx/include/cstdint b/lib/libcxx/include/cstdint deleted file mode 100644 index 9e30b50..0000000 --- a/lib/libcxx/include/cstdint +++ /dev/null @@ -1,5 +0,0 @@ -/* vim: syntax=cpp */ - -#pragma once - -#include diff --git a/lib/libcxx/include/new b/lib/libcxx/include/new deleted file mode 100644 index 8e943e0..0000000 --- a/lib/libcxx/include/new +++ /dev/null @@ -1,69 +0,0 @@ -/* vim: syntax=cpp */ - -#pragma once - -#include "cstddef" - -namespace std { - // storage allocation errors - class bad_alloc; - class bad_array_new_length; - - struct destroying_delete_t { - explicit destroying_delete_t() = default; - }; - inline constexpr destroying_delete_t destroying_delete{}; - - // global operator new control - enum class align_val_t : size_t {}; - - struct nothrow_t { explicit nothrow_t() = default; }; - extern const nothrow_t nothrow; - - using new_handler = void (*)(); - new_handler get_new_handler() noexcept; - new_handler set_new_handler(new_handler new_p) noexcept; - - // pointer optimization barrier - template [[nodiscard]] constexpr T* launder(T* p) noexcept; - - // hardware interference size - // inline constexpr size_t hardware_destructive_interference_size = - // /* implementation-defined */; - // inline constexpr size_t hardware_constructive_interference_size = - // /* implementation-defined */; -} - -// storage allocation and deallocation -[[nodiscard]] void* operator new(std::size_t size); -[[nodiscard]] void* operator new(std::size_t size, std::align_val_t alignment); -[[nodiscard]] void* operator new(std::size_t size, const std::nothrow_t&) noexcept; -[[nodiscard]] void* operator new(std::size_t size, std::align_val_t alignment, - const std::nothrow_t&) noexcept; - -void operator delete(void* ptr) noexcept; -void operator delete(void* ptr, std::size_t size) noexcept; -void operator delete(void* ptr, std::align_val_t alignment) noexcept; -void operator delete(void* ptr, std::size_t size, std::align_val_t alignment) noexcept; -void operator delete(void* ptr, const std::nothrow_t&) noexcept; -void operator delete(void* ptr, std::align_val_t alignment, - const std::nothrow_t&) noexcept; - -[[nodiscard]] void* operator new[](std::size_t size); -[[nodiscard]] void* operator new[](std::size_t size, std::align_val_t alignment); -[[nodiscard]] void* operator new[](std::size_t size, const std::nothrow_t&) noexcept; -[[nodiscard]] void* operator new[](std::size_t size, std::align_val_t alignment, - const std::nothrow_t&) noexcept; - -void operator delete[](void* ptr) noexcept; -void operator delete[](void* ptr, std::size_t size) noexcept; -void operator delete[](void* ptr, std::align_val_t alignment) noexcept; -void operator delete[](void* ptr, std::size_t size, std::align_val_t alignment) noexcept; -void operator delete[](void* ptr, const std::nothrow_t&) noexcept; -void operator delete[](void* ptr, std::align_val_t alignment, - const std::nothrow_t&) noexcept; - -[[nodiscard]] void* operator new (std::size_t size, void* ptr) noexcept; -[[nodiscard]] void* operator new[](std::size_t size, void* ptr) noexcept; -void operator delete (void* ptr, void*) noexcept; -void operator delete[](void* ptr, void*) noexcept; diff --git a/lib/libcxx/src/new.cpp b/lib/libcxx/src/new.cpp deleted file mode 100644 index b054eaf..0000000 --- a/lib/libcxx/src/new.cpp +++ /dev/null @@ -1,8 +0,0 @@ -#include "new" - -#include - -[[nodiscard]] void* operator new(std::size_t size) { return malloc(size); } -[[nodiscard]] void* operator new[](std::size_t size) { return malloc(size); } - -void operator delete(void*, std::size_t) {} diff --git a/lib/mammoth/CMakeLists.txt b/lib/mammoth/CMakeLists.txt index 8edb58e..fcb4966 100644 --- a/lib/mammoth/CMakeLists.txt +++ b/lib/mammoth/CMakeLists.txt @@ -5,6 +5,7 @@ add_library(mammoth_lib STATIC src/endpoint_server.cpp src/init.cpp src/memory_region.cpp + src/new.cpp src/process.cpp src/port.cpp src/thread.cpp diff --git a/lib/mammoth/src/new.cpp b/lib/mammoth/src/new.cpp new file mode 100644 index 0000000..d58fcd3 --- /dev/null +++ b/lib/mammoth/src/new.cpp @@ -0,0 +1,7 @@ +#include +#include + +[[nodiscard]] void* operator new(uint64_t size) { return malloc(size); } +[[nodiscard]] void* operator new[](uint64_t size) { return malloc(size); } + +void operator delete(void*, uint64_t) {} diff --git a/scripts/build_image.sh b/scripts/build_image.sh index 6e2d07a..494b799 100644 --- a/scripts/build_image.sh +++ b/scripts/build_image.sh @@ -26,14 +26,14 @@ parted -s $dev mklabel gpt mkpart EFI fat32 1MiB 10MiB mkpart ext2 10MiB 100% se mkfs.fat -F 12 "${dev}p1" mke2fs "${dev}p2" -limine-deploy "${dev}" +limine bios-install "${dev}" mkdir -p efi/ mount "${dev}p1" efi/ mkdir -p efi/EFI/BOOT cp /usr/share/limine/BOOTX64.EFI efi/EFI/BOOT -cp /usr/share/limine/limine.sys efi/ +cp /usr/share/limine/limine-bios.sys efi/ cp ../zion/boot/limine.cfg efi/ cp zion/zion efi/ mkdir -p efi/sys diff --git a/sys/denali/CMakeLists.txt b/sys/denali/CMakeLists.txt index 7dff3d8..7e9d087 100644 --- a/sys/denali/CMakeLists.txt +++ b/sys/denali/CMakeLists.txt @@ -12,7 +12,6 @@ target_include_directories(denali "${CMAKE_CURRENT_SOURCE_DIR}/include") target_link_libraries(denali - cxx glacier mammoth_lib yellowstonestub diff --git a/sys/yellowstone/CMakeLists.txt b/sys/yellowstone/CMakeLists.txt index 2959727..6d6186d 100644 --- a/sys/yellowstone/CMakeLists.txt +++ b/sys/yellowstone/CMakeLists.txt @@ -8,7 +8,6 @@ add_executable(yellowstone PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}) target_link_libraries(yellowstone - cxx mammoth_lib glacier libdenali diff --git a/sys/yellowstone/yellowstone_server.cpp b/sys/yellowstone/yellowstone_server.cpp index a6608be..652b975 100644 --- a/sys/yellowstone/yellowstone_server.cpp +++ b/sys/yellowstone/yellowstone_server.cpp @@ -8,8 +8,6 @@ #include "hw/gpt.h" #include "include/yellowstone.h" -// FIXME: This linkage was missing :( -void* operator new[](uint64_t size) { return malloc(size); } namespace { void ServerThreadBootstrap(void* yellowstone) {