diff --git a/.github/FUNDING.yml b/.github/FUNDING.yml index 5d7b46a1..cd443a19 100644 --- a/.github/FUNDING.yml +++ b/.github/FUNDING.yml @@ -3,7 +3,7 @@ github: # Replace with up to 4 GitHub Sponsors-enabled usernames e.g., [user1, user2] patreon: # Replace with a single Patreon username open_collective: # Replace with a single Open Collective username -ko_fi: EnderIce2 # Replace with a single Ko-fi username +ko_fi: # Replace with a single Ko-fi username tidelift: # Replace with a single Tidelift platform-name/package-name e.g., npm/babel community_bridge: # Replace with a single Community Bridge project-name e.g., cloud-foundry liberapay: # Replace with a single Liberapay username diff --git a/.github/workflows/makefile.yml b/.github/workflows/makefile.yml index 1e79cddc..caea669e 100644 --- a/.github/workflows/makefile.yml +++ b/.github/workflows/makefile.yml @@ -9,7 +9,7 @@ on: jobs: deploydoc: name: Deploy Documentation to GitHub Pages - runs-on: ubuntu-22.04 + runs-on: ubuntu-latest steps: - name: Checkout code uses: actions/checkout@v3 @@ -32,7 +32,7 @@ jobs: buildcompiler: name: Build Cross-Compiler & Toolchain - runs-on: ubuntu-22.04 + runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 with: @@ -73,7 +73,7 @@ jobs: analyze: name: Analyze with CodeQL - runs-on: ubuntu-22.04 + runs-on: ubuntu-latest needs: [buildcompiler] permissions: actions: read @@ -122,9 +122,31 @@ jobs: - name: Perform CodeQL Analysis uses: github/codeql-action/analyze@v2 + flawfinder: + name: Flawfinder + runs-on: ubuntu-latest + permissions: + actions: read + contents: read + security-events: write + steps: + - name: Checkout code + uses: actions/checkout@v3 + + - name: flawfinder_scan + uses: david-a-wheeler/flawfinder@2.0.19 + with: + arguments: '--sarif ./ --minlevel 4' + output: 'flawfinder_results.sarif' + + - name: Upload analysis results to GitHub Security tab + uses: github/codeql-action/upload-sarif@v2 + with: + sarif_file: ${{github.workspace}}/flawfinder_results.sarif + compile64: name: Build amd64 - runs-on: ubuntu-22.04 + runs-on: ubuntu-latest needs: [buildcompiler] steps: - uses: actions/checkout@v3 @@ -147,15 +169,15 @@ jobs: path: tools/cross key: ${{ runner.os }}-cross-${{ hashFiles('tools/Makefile') }} - - name: Configure Makefile.conf - run: sed -i 's/.*OSARCH = .*/OSARCH = amd64/' ./Makefile.conf && cat Makefile.conf | grep OSARCH + - name: Configure config.mk + run: sed -i 's/.*OSARCH = .*/OSARCH = amd64/' ./config.mk && cat config.mk | grep OSARCH - name: Compile Debug and Release ISO run: | make build mv Fennix.iso Fennix-debug.iso make clean - sed -i 's/.*DEBUG = .*/DEBUG = 0/' ./Makefile.conf && cat Makefile.conf | grep DEBUG + sed -i 's/.*DEBUG = .*/DEBUG = 0/' ./config.mk && cat config.mk | grep DEBUG make build mv Fennix.iso Fennix-release.iso @@ -173,7 +195,7 @@ jobs: compile32: name: Build i386 - runs-on: ubuntu-22.04 + runs-on: ubuntu-latest needs: [buildcompiler] steps: - uses: actions/checkout@v3 @@ -196,15 +218,15 @@ jobs: path: tools/cross key: ${{ runner.os }}-cross-${{ hashFiles('tools/Makefile') }} - - name: Configure Makefile.conf - run: sed -i 's/.*OSARCH = .*/OSARCH = i386/' ./Makefile.conf && cat Makefile.conf | grep OSARCH + - name: Configure config.mk + run: sed -i 's/.*OSARCH = .*/OSARCH = i386/' ./config.mk && cat config.mk | grep OSARCH - name: Compile Debug and Release ISO run: | make build mv Fennix.iso Fennix-debug.iso make clean - sed -i 's/.*DEBUG = .*/DEBUG = 0/' ./Makefile.conf && cat Makefile.conf | grep DEBUG + sed -i 's/.*DEBUG = .*/DEBUG = 0/' ./config.mk && cat config.mk | grep DEBUG make build mv Fennix.iso Fennix-release.iso @@ -223,7 +245,7 @@ jobs: compilearm64: if: ${{ false }} # Disabled until we can get it to work name: Build aarch64 - runs-on: ubuntu-22.04 + runs-on: ubuntu-latest needs: [buildcompiler] steps: - uses: actions/checkout@v3 @@ -246,15 +268,15 @@ jobs: path: tools/cross key: ${{ runner.os }}-cross-${{ hashFiles('tools/Makefile') }} - - name: Configure Makefile.conf - run: sed -i 's/.*OSARCH = .*/OSARCH = aarch64/' ./Makefile.conf && cat Makefile.conf | grep OSARCH + - name: Configure config.mk + run: sed -i 's/.*OSARCH = .*/OSARCH = aarch64/' ./config.mk && cat config.mk | grep OSARCH - name: Compile Debug and Release ISO run: | make build mv Fennix.iso Fennix-debug.iso make clean - sed -i 's/.*DEBUG = .*/DEBUG = 0/' ./Makefile.conf && cat Makefile.conf | grep DEBUG + sed -i 's/.*DEBUG = .*/DEBUG = 0/' ./config.mk && cat config.mk | grep DEBUG make build mv Fennix.iso Fennix-release.iso diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 8202cc9f..7c6790eb 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -87,11 +87,11 @@ build64: - make --quiet -C Userspace prepare - make --quiet -C Lynx prepare - make --quiet -C Kernel prepare - - sed -i 's/.*OSARCH = .*/OSARCH = amd64/' ./Makefile.conf && cat Makefile.conf | grep OSARCH + - sed -i 's/.*OSARCH = .*/OSARCH = amd64/' ./config.mk && cat config.mk | grep OSARCH - make build - mv Fennix.iso Fennix-debug.iso - make clean - - sed -i 's/.*DEBUG = .*/DEBUG = 0/' ./Makefile.conf && cat Makefile.conf | grep DEBUG + - sed -i 's/.*DEBUG = .*/DEBUG = 0/' ./config.mk && cat config.mk | grep DEBUG - make build - mv Fennix.iso Fennix-release.iso artifacts: @@ -111,11 +111,11 @@ build32: - make --quiet -C Userspace prepare - make --quiet -C Lynx prepare - make --quiet -C Kernel prepare - - sed -i 's/.*OSARCH = .*/OSARCH = i386/' ./Makefile.conf && cat Makefile.conf | grep OSARCH + - sed -i 's/.*OSARCH = .*/OSARCH = i386/' ./config.mk && cat config.mk | grep OSARCH - make build - mv Fennix.iso Fennix-debug.iso - make clean - - sed -i 's/.*DEBUG = .*/DEBUG = 0/' ./Makefile.conf && cat Makefile.conf | grep DEBUG + - sed -i 's/.*DEBUG = .*/DEBUG = 0/' ./config.mk && cat config.mk | grep DEBUG - make build - mv Fennix.iso Fennix-release.iso artifacts: @@ -134,11 +134,11 @@ buildarm64: - make --quiet -C Userspace prepare - make --quiet -C Lynx prepare - make --quiet -C Kernel prepare - - sed -i 's/.*OSARCH = .*/OSARCH = arm64/' ./Makefile.conf && cat Makefile.conf | grep OSARCH + - sed -i 's/.*OSARCH = .*/OSARCH = arm64/' ./config.mk && cat config.mk | grep OSARCH - make build - mv Fennix.iso Fennix-debug.iso - make clean - - sed -i 's/.*DEBUG = .*/DEBUG = 0/' ./Makefile.conf && cat Makefile.conf | grep DEBUG + - sed -i 's/.*DEBUG = .*/DEBUG = 0/' ./config.mk && cat config.mk | grep DEBUG - make build - mv Fennix.iso Fennix-release.iso artifacts: diff --git a/.vscode/c_boilerplates.code-snippets b/.vscode/c_boilerplates.code-snippets deleted file mode 100644 index 1ac15e7c..00000000 --- a/.vscode/c_boilerplates.code-snippets +++ /dev/null @@ -1,20 +0,0 @@ -{ - "Fennix Kernel Header": { - "scope": "c", - "prefix": [ - "head", - ], - "body": [ - "#ifndef __FENNIX_KERNEL_${2:header}_H__", - "#define __FENNIX_KERNEL_${2:header}_H__", - "", - "#include ", - "", - "$0", - "", - "#endif // !__FENNIX_KERNEL_${2:header}_H__", - "" - ], - "description": "Create kernel header." - } -} \ No newline at end of file diff --git a/.vscode/settings.json b/.vscode/settings.json index a1972aa2..46012f33 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -11,16 +11,10 @@ "editor.cursorSmoothCaretAnimation": "on", "files.watcherExclude": { "**/tools/binutils-gdb/**": true, - "**/tools/build-binutilsamd64/**": true, - "**/tools/build-binutilsarm64/**": true, - "**/tools/build-binutilsi386/**": true, - "**/tools/build-gccamd64/**": true, - "**/tools/build-gccarm64/**": true, - "**/tools/build-gcci386/**": true, - "**/tools/cross/**": true, "**/tools/gcc/**": true, "**/tools/limine/**": true, "**/tools/qemu/**": true, + "**/tools/cross/**": true, "**/doxygen-doc/**": true, } } \ No newline at end of file diff --git a/Drivers/.vscode/c_cpp_properties.json b/Drivers/.vscode/c_cpp_properties.json index 1b275743..5316afb6 100644 --- a/Drivers/.vscode/c_cpp_properties.json +++ b/Drivers/.vscode/c_cpp_properties.json @@ -12,7 +12,6 @@ "KERNEL_VERSION=\"1.0\"", "GIT_COMMIT=\"0000000000000000000000000000000000000000\"", "GIT_COMMIT_SHORT=\"0000000\"", - "a64", "DEBUG=\"1\"" ], "compilerPath": "${workspaceFolder}/../tools/cross/bin/x86_64-fennix-gcc", @@ -69,7 +68,6 @@ "KERNEL_VERSION=\"1.0\"", "GIT_COMMIT=\"0000000000000000000000000000000000000000\"", "GIT_COMMIT_SHORT=\"0000000\"", - "a32", "DEBUG=\"1\"" ], "compilerPath": "${workspaceFolder}/../tools/cross/bin/i386-elf-gcc", diff --git a/Drivers/audio/ac97/Makefile b/Drivers/audio/ac97/Makefile index 91c439ca..b77ec939 100644 --- a/Drivers/audio/ac97/Makefile +++ b/Drivers/audio/ac97/Makefile @@ -1,5 +1,5 @@ # Config files -include ../../../Makefile.conf +include ../../../config.mk include ../../config.mk S_SOURCES = $(shell find ./ -type f -name '*.S') diff --git a/Drivers/audio/hda/Makefile b/Drivers/audio/hda/Makefile index 90653fb3..bdb87c7e 100644 --- a/Drivers/audio/hda/Makefile +++ b/Drivers/audio/hda/Makefile @@ -1,5 +1,5 @@ # Config files -include ../../../Makefile.conf +include ../../../config.mk include ../../config.mk S_SOURCES = $(shell find ./ -type f -name '*.S') diff --git a/Drivers/filesystem/fat/Makefile b/Drivers/filesystem/fat/Makefile index 80a9fb99..08692d37 100644 --- a/Drivers/filesystem/fat/Makefile +++ b/Drivers/filesystem/fat/Makefile @@ -1,5 +1,5 @@ # Config files -include ../../../Makefile.conf +include ../../../config.mk include ../../config.mk S_SOURCES = $(shell find ./ -type f -name '*.S') diff --git a/Drivers/input/aip/Makefile b/Drivers/input/aip/Makefile index de6f60f9..b0181098 100644 --- a/Drivers/input/aip/Makefile +++ b/Drivers/input/aip/Makefile @@ -1,5 +1,5 @@ # Config files -include ../../../Makefile.conf +include ../../../config.mk include ../../config.mk S_SOURCES = $(shell find ./ -type f -name '*.S') diff --git a/Drivers/library/Makefile b/Drivers/library/Makefile index 328d43d5..30a6dbd8 100644 --- a/Drivers/library/Makefile +++ b/Drivers/library/Makefile @@ -1,5 +1,5 @@ # Config file -include ../../Makefile.conf +include ../../config.mk FILENAME = libkernel.so diff --git a/Drivers/misc/example/Makefile b/Drivers/misc/example/Makefile index 9d07ef36..4e9cc861 100644 --- a/Drivers/misc/example/Makefile +++ b/Drivers/misc/example/Makefile @@ -1,5 +1,5 @@ # Config files -include ../../../Makefile.conf +include ../../../config.mk include ../../config.mk S_SOURCES = $(shell find ./ -type f -name '*.S') diff --git a/Drivers/misc/example/main.c b/Drivers/misc/example/main.c index b1ff813e..67a16f26 100644 --- a/Drivers/misc/example/main.c +++ b/Drivers/misc/example/main.c @@ -66,15 +66,14 @@ int DriverProbe() * This function is to test if the driver is compatible * with the hardware. * Example: Like if there is a PCI device that the driver - * is for, or a CPU feature that etc. + * is for, or a CPU feature etc. * * Return 0 if the driver is compatible with the hardware. - * Otherwise, return a value that is not 0. * * Note: In this function you cannot use variables that * have constructors or destructors. Before DriverEntry, * the constructors are called and after DriverFinalize, - * the destructors are called. + * the destructors. */ return 0; diff --git a/Drivers/misc/vmware/Makefile b/Drivers/misc/vmware/Makefile index cfffabc0..ab8f6238 100644 --- a/Drivers/misc/vmware/Makefile +++ b/Drivers/misc/vmware/Makefile @@ -1,5 +1,5 @@ # Config files -include ../../../Makefile.conf +include ../../../config.mk include ../../config.mk S_SOURCES = $(shell find ./ -type f -name '*.S') diff --git a/Drivers/network/e1000/Makefile b/Drivers/network/e1000/Makefile index 76851589..4d8a6296 100644 --- a/Drivers/network/e1000/Makefile +++ b/Drivers/network/e1000/Makefile @@ -1,5 +1,5 @@ # Config files -include ../../../Makefile.conf +include ../../../config.mk include ../../config.mk S_SOURCES = $(shell find ./ -type f -name '*.S') diff --git a/Drivers/network/rtl8139/Makefile b/Drivers/network/rtl8139/Makefile index 59ddc9ab..25c06d92 100644 --- a/Drivers/network/rtl8139/Makefile +++ b/Drivers/network/rtl8139/Makefile @@ -1,5 +1,5 @@ # Config files -include ../../../Makefile.conf +include ../../../config.mk include ../../config.mk S_SOURCES = $(shell find ./ -type f -name '*.S') diff --git a/Drivers/storage/ahci/Makefile b/Drivers/storage/ahci/Makefile index 55a0760a..e14cba48 100644 --- a/Drivers/storage/ahci/Makefile +++ b/Drivers/storage/ahci/Makefile @@ -1,5 +1,5 @@ # Config files -include ../../../Makefile.conf +include ../../../config.mk include ../../config.mk S_SOURCES = $(shell find ./ -type f -name '*.S') diff --git a/Drivers/storage/ata/Makefile b/Drivers/storage/ata/Makefile index e4b48ea3..70629111 100644 --- a/Drivers/storage/ata/Makefile +++ b/Drivers/storage/ata/Makefile @@ -1,5 +1,5 @@ # Config files -include ../../../Makefile.conf +include ../../../config.mk include ../../config.mk S_SOURCES = $(shell find ./ -type f -name '*.S') diff --git a/Kernel/.github/workflows/flawfinder.yml b/Kernel/.github/workflows/flawfinder.yml deleted file mode 100644 index dfa6d337..00000000 --- a/Kernel/.github/workflows/flawfinder.yml +++ /dev/null @@ -1,36 +0,0 @@ -# This workflow uses actions that are not certified by GitHub. -# They are provided by a third-party and are governed by -# separate terms of service, privacy policy, and support -# documentation. - -name: flawfinder - -on: - push: - branches: [ "master" ] - pull_request: - # The branches below must be a subset of the branches above - branches: [ "master" ] - -jobs: - flawfinder: - name: Flawfinder - runs-on: ubuntu-latest - permissions: - actions: read - contents: read - security-events: write - steps: - - name: Checkout code - uses: actions/checkout@v3 - - - name: flawfinder_scan - uses: david-a-wheeler/flawfinder@8e4a779ad59dbfaee5da586aa9210853b701959c - with: - arguments: '--sarif ./' - output: 'flawfinder_results.sarif' - - - name: Upload analysis results to GitHub Security tab - uses: github/codeql-action/upload-sarif@v2 - with: - sarif_file: ${{github.workspace}}/flawfinder_results.sarif diff --git a/Kernel/.vscode/c_cpp_properties.json b/Kernel/.vscode/c_cpp_properties.json index 79ebc98a..35a697a5 100644 --- a/Kernel/.vscode/c_cpp_properties.json +++ b/Kernel/.vscode/c_cpp_properties.json @@ -10,8 +10,6 @@ "${workspaceFolder}/arch/amd64/include" ], "defines": [ - "a64", - "a86", "DEBUG=\"1\"" ], "forcedInclude": [ @@ -82,8 +80,6 @@ "${workspaceFolder}/.vscode/preinclude.h" ], "defines": [ - "a32", - "a86", "DEBUG=\"1\"" ], "compilerPath": "${workspaceFolder}/../tools/cross/bin/i386-fennix-gcc", @@ -154,7 +150,6 @@ "${workspaceFolder}/.vscode/preinclude.h" ], "defines": [ - "aa64", "DEBUG=\"1\"" ], "compilerPath": "${workspaceFolder}/../tools/cross/bin/aarch64-fennix-gcc", diff --git a/Kernel/Makefile b/Kernel/Makefile index 2e370fd8..2ec1bcd0 100644 --- a/Kernel/Makefile +++ b/Kernel/Makefile @@ -1,54 +1,38 @@ -# Config file -include ../Makefile.conf - KERNEL_FILENAME = fennix.elf -CC = ../$(COMPILER_PATH)/$(COMPILER_ARCH)gcc -CPP = ../$(COMPILER_PATH)/$(COMPILER_ARCH)g++ -LD = ../$(COMPILER_PATH)/$(COMPILER_ARCH)ld -AS = ../$(COMPILER_PATH)/$(COMPILER_ARCH)as -NM = ../$(COMPILER_PATH)/$(COMPILER_ARCH)nm -OBJCOPY = ../$(COMPILER_PATH)/$(COMPILER_ARCH)objcopy -OBJDUMP = ../$(COMPILER_PATH)/$(COMPILER_ARCH)objdump -GDB = ../$(COMPILER_PATH)/$(COMPILER_ARCH)gdb - -RUST_TARGET_PATH = arch/$(OSARCH)/rust-target.json - GIT_COMMIT = $(shell git rev-parse HEAD) GIT_COMMIT_SHORT = $(shell git rev-parse --short HEAD) -HEADERS = $(sort $(dir $(wildcard ./include/*))) $(sort $(dir $(wildcard ./include_std/*))) +HEADERS := $(sort $(dir $(wildcard ./include/*))) $(sort $(dir $(wildcard ./include_std/*))) INCLUDE_DIR = -I./include -I./include_std -BMP_SOURCES = $(shell find ./ -type f -name '*.bmp') -PSF_SOURCES = $(shell find ./ -type f -name '*.psf') +BMP_SOURCES := $(shell find ./ -type f -name '*.bmp') +PSF_SOURCES := $(shell find ./ -type f -name '*.psf') ifeq ($(OSARCH), amd64) -S_SOURCES = $(shell find ./ -type f -name '*.S' -not -path "./arch/i386/*" -not -path "./arch/aarch64/*") -s_SOURCES = $(shell find ./ -type f -name '*.s' -not -path "./arch/i386/*" -not -path "./arch/aarch64/*") -C_SOURCES = $(shell find ./ -type f -name '*.c' -not -path "./arch/i386/*" -not -path "./arch/aarch64/*") -CPP_SOURCES = $(shell find ./ -type f -name '*.cpp' -not -path "./arch/i386/*" -not -path "./arch/aarch64/*") -HEADERS += $(sort $(dir $(wildcard ./arch/amd64/include/*))) -INCLUDE_DIR += -I./arch/amd64/include +S_SOURCES := $(shell find ./ -type f -name '*.S' -not -path "./arch/i386/*" -not -path "./arch/aarch64/*") +s_SOURCES := $(shell find ./ -type f -name '*.s' -not -path "./arch/i386/*" -not -path "./arch/aarch64/*") +C_SOURCES := $(shell find ./ -type f -name '*.c' -not -path "./arch/i386/*" -not -path "./arch/aarch64/*") +CPP_SOURCES := $(shell find ./ -type f -name '*.cpp' -not -path "./arch/i386/*" -not -path "./arch/aarch64/*") else ifeq ($(OSARCH), i386) -S_SOURCES = $(shell find ./ -type f -name '*.S' -not -path "./arch/amd64/*" -not -path "./arch/aarch64/*") -s_SOURCES = $(shell find ./ -type f -name '*.s' -not -path "./arch/amd64/*" -not -path "./arch/aarch64/*") -C_SOURCES = $(shell find ./ -type f -name '*.c' -not -path "./arch/amd64/*" -not -path "./arch/aarch64/*") -CPP_SOURCES = $(shell find ./ -type f -name '*.cpp' -not -path "./arch/amd64/*" -not -path "./arch/aarch64/*") -HEADERS += $(sort $(dir $(wildcard ./arch/i386/include/*))) -INCLUDE_DIR += -I./arch/i386/include +S_SOURCES := $(shell find ./ -type f -name '*.S' -not -path "./arch/amd64/*" -not -path "./arch/aarch64/*") +s_SOURCES := $(shell find ./ -type f -name '*.s' -not -path "./arch/amd64/*" -not -path "./arch/aarch64/*") +C_SOURCES := $(shell find ./ -type f -name '*.c' -not -path "./arch/amd64/*" -not -path "./arch/aarch64/*") +CPP_SOURCES := $(shell find ./ -type f -name '*.cpp' -not -path "./arch/amd64/*" -not -path "./arch/aarch64/*") else ifeq ($(OSARCH), aarch64) -S_SOURCES = $(shell find ./ -type f -name '*.S' -not -path "./arch/amd64/*" -not -path "./arch/i386/*") -s_SOURCES = $(shell find ./ -type f -name '*.s' -not -path "./arch/amd64/*" -not -path "./arch/i386/*") -C_SOURCES = $(shell find ./ -type f -name '*.c' -not -path "./arch/amd64/*" -not -path "./arch/i386/*") -CPP_SOURCES = $(shell find ./ -type f -name '*.cpp' -not -path "./arch/amd64/*" -not -path "./arch/i386/*") -HEADERS += $(sort $(dir $(wildcard ./arch/aarch64/include/*))) -INCLUDE_DIR += -I./arch/aarch64/include -endif -OBJ = $(C_SOURCES:.c=.o) $(CPP_SOURCES:.cpp=.o) $(ASM_SOURCES:.asm=.o) $(S_SOURCES:.S=.o) $(s_SOURCES:.s=.o) $(PSF_SOURCES:.psf=.o) $(BMP_SOURCES:.bmp=.o) +S_SOURCES := $(shell find ./ -type f -name '*.S' -not -path "./arch/amd64/*" -not -path "./arch/i386/*") +s_SOURCES := $(shell find ./ -type f -name '*.s' -not -path "./arch/amd64/*" -not -path "./arch/i386/*") +C_SOURCES := $(shell find ./ -type f -name '*.c' -not -path "./arch/amd64/*" -not -path "./arch/i386/*") +CPP_SOURCES := $(shell find ./ -type f -name '*.cpp' -not -path "./arch/amd64/*" -not -path "./arch/i386/*") +endif # OSARCH + +OBJ = $(BMP_SOURCES:.bmp=.o) $(PSF_SOURCES:.psf=.o) $(s_SOURCES:.s=.o) $(S_SOURCES:.S=.o) $(C_SOURCES:.c=.o) $(CPP_SOURCES:.cpp=.o) STACK_USAGE_OBJ = $(C_SOURCES:.c=.su) $(CPP_SOURCES:.cpp=.su) GCNO_OBJ = $(C_SOURCES:.c=.gcno) $(CPP_SOURCES:.cpp=.gcno) -LDFLAGS := -Wl,-Map kernel.map -static -nostdlib -nodefaultlibs -nolibc +LDFLAGS = -static -nostdlib -nodefaultlibs -nolibc \ + -Wl,-static,--no-dynamic-linker,-ztext \ + -zmax-page-size=0x1000 \ + -Wl,-Map kernel.map -fno-pic -fno-pie # Disable all warnings by adding "-w" in WARNCFLAG and if you want to treat the warnings as errors, add "-Werror" # -Wconversion this may be re-added later @@ -58,6 +42,8 @@ WARNCFLAG = -Wall -Wextra \ -Wstrict-overflow=5 -Wno-error=cpp -Werror \ -Wno-unused-parameter +CFLAG_STACK_PROTECTOR := -fstack-protector-all + # https://gcc.gnu.org/onlinedocs/gcc/x86-Options.html CFLAGS := \ $(INCLUDE_DIR) \ @@ -66,40 +52,19 @@ CFLAGS := \ -DKERNEL_ARCH='"$(OSARCH)"' \ -DKERNEL_VERSION='"$(KERNEL_VERSION)"' \ -DGIT_COMMIT='"$(GIT_COMMIT)"' \ - -DGIT_COMMIT_SHORT='"$(GIT_COMMIT_SHORT)"' + -DGIT_COMMIT_SHORT='"$(GIT_COMMIT_SHORT)"' \ + -fno-pic -fno-pie -mno-red-zone -fno-builtin ifeq ($(OSARCH), amd64) - -CFLAGS += -fno-pic -fno-pie -mno-red-zone -march=core2 \ - -mcmodel=kernel -fno-builtin -Da64 -Da86 -m64 -CFLAG_STACK_PROTECTOR := -fstack-protector-all -LDFLAGS += -Tarch/amd64/linker.ld \ - -fno-pic -fno-pie \ - -Wl,-static,--no-dynamic-linker,-ztext \ - -zmax-page-size=0x1000 \ - -Wl,-Map kernel.map - +CFLAGS += -march=core2 -mcmodel=kernel -m64 +LDFLAGS += -Tarch/amd64/linker.ld else ifeq ($(OSARCH), i386) - -CFLAGS += -fno-pic -fno-pie -mno-red-zone -march=pentium \ - -fno-builtin -Da32 -Da86 -m32 -CFLAG_STACK_PROTECTOR := -fstack-protector-all -LDFLAGS += -Tarch/i386/linker.ld \ - -fno-pic -fno-pie \ - -Wl,-static,--no-dynamic-linker,-ztext \ - -zmax-page-size=0x1000 \ - -Wl,-Map kernel.map - +CFLAGS += -march=pentium -m32 +LDFLAGS += -Tarch/i386/linker.ld else ifeq ($(OSARCH), aarch64) - -CFLAGS += -fno-builtin -Wstack-protector -Daa64 -fPIC -mno-outline-atomics -CFLAG_STACK_PROTECTOR := -fstack-protector-all -LDFLAGS += -Tarch/aarch64/linker.ld -fPIC -pie \ - -Wl,-static,--no-dynamic-linker,-ztext \ - -zmax-page-size=0x1000 \ - -Wl,-Map kernel.map - -endif +CFLAGS += +LDFLAGS += -Tarch/aarch64/linker.ld +endif # OSARCH # -finstrument-functions for __cyg_profile_func_enter & __cyg_profile_func_exit. Used for profiling and debugging. ifeq ($(DEBUG), 1) @@ -109,14 +74,14 @@ ifeq ($(DEBUG), 1) CFLAGS += -DDEBUG -ggdb3 -O0 -fdiagnostics-color=always -fstack-usage -fsanitize=undefined ifeq ($(OSARCH), amd64) CFLAGS += -fverbose-asm -endif +endif # amd64 ifneq ($(OSARCH), aarch64) CFLAGS += -fstack-check -endif +endif # aarch64 LDFLAGS += -ggdb3 -O0 ASFLAGS += -g --gstabs+ --gdwarf-5 -D WARNCFLAG += -Wno-unused-function -Wno-maybe-uninitialized -Wno-builtin-declaration-mismatch -Wno-unknown-pragmas -Wno-unused-parameter -Wno-unused-variable -endif +endif # DEBUG default: $(error Please specify a target) @@ -131,51 +96,51 @@ ifeq (,$(wildcard $(KERNEL_FILENAME))) $(error $(KERNEL_FILENAME) does not exist) endif $(info Dumping $(KERNEL_FILENAME) in AT T syntax...) - $(OBJDUMP) -D -g -s -d $(KERNEL_FILENAME) > kernel_dump.map + $(__CONF_OBJDUMP) -D -g -s -d $(KERNEL_FILENAME) > kernel_dump.map $(info Dumping $(KERNEL_FILENAME) in Intel syntax...) - $(OBJDUMP) -M intel -D -g -s -d $(KERNEL_FILENAME) > kernel_dump_intel.map + $(__CONF_OBJDUMP) -M intel -D -g -s -d $(KERNEL_FILENAME) > kernel_dump_intel.map $(KERNEL_FILENAME): $(OBJ) $(info Linking $@) - $(CC) $(LDFLAGS) $(OBJ) -o $@ -# $(CC) $(LDFLAGS) $(OBJ) -mno-red-zone -lgcc -o $@ + $(__CONF_CC) $(LDFLAGS) $(OBJ) -o $@ +# $(__CONF_CC) $(LDFLAGS) $(OBJ) -mno-red-zone -lgcc -o $@ %.o: %.c $(HEADERS) $(info Compiling $<) - $(CC) $(CFLAGS) $(CFLAG_STACK_PROTECTOR) $(WARNCFLAG) -std=c17 -c $< -o $@ + $(__CONF_CC) $(CFLAGS) $(CFLAG_STACK_PROTECTOR) $(WARNCFLAG) -std=c17 -c $< -o $@ # https://gcc.gnu.org/projects/cxx-status.html %.o: %.cpp $(HEADERS) $(info Compiling $<) - $(CPP) $(CFLAGS) -fcoroutines $(CFLAG_STACK_PROTECTOR) $(WARNCFLAG) -std=c++20 -c $< -o $@ -fno-rtti + $(__CONF_CPP) $(CFLAGS) -fcoroutines $(CFLAG_STACK_PROTECTOR) $(WARNCFLAG) -std=c++20 -c $< -o $@ -fno-rtti %.o: %.S $(info Compiling $<) - $(AS) $(ASFLAGS) -c $< -o $@ + $(__CONF_AS) $(ASFLAGS) -c $< -o $@ %.o: %.s $(info Compiling $<) - $(AS) $(ASFLAGS) -c $< -o $@ + $(__CONF_AS) $(ASFLAGS) -c $< -o $@ %.o: %.psf ifeq ($(OSARCH), amd64) - $(OBJCOPY) -O elf64-x86-64 -I binary $< $@ + $(__CONF_OBJCOPY) -O elf64-x86-64 -I binary $< $@ else ifeq ($(OSARCH), i386) - $(OBJCOPY) -O elf32-i386 -I binary $< $@ + $(__CONF_OBJCOPY) -O elf32-i386 -I binary $< $@ else ifeq ($(OSARCH), aarch64) - $(OBJCOPY) -O elf64-littleaarch64 -I binary $< $@ + $(__CONF_OBJCOPY) -O elf64-littleaarch64 -I binary $< $@ endif - $(NM) $@ + $(__CONF_NM) $@ %.o: %.bmp ifeq ($(OSARCH), amd64) - $(OBJCOPY) -O elf64-x86-64 -I binary $< $@ + $(__CONF_OBJCOPY) -O elf64-x86-64 -I binary $< $@ else ifeq ($(OSARCH), i386) - $(OBJCOPY) -O elf32-i386 -I binary $< $@ + $(__CONF_OBJCOPY) -O elf32-i386 -I binary $< $@ else ifeq ($(OSARCH), aarch64) - $(OBJCOPY) -O elf64-littlearch64 -I binary $< $@ + $(__CONF_OBJCOPY) -O elf64-littlearch64 -I binary $< $@ endif - $(NM) $@ + $(__CONF_NM) $@ clean: rm -f kernel.map kernel_dump.map kernel_dump_intel.map $(OBJ) $(STACK_USAGE_OBJ) $(GCNO_OBJ) $(KERNEL_FILENAME) diff --git a/Kernel/core/cpu.cpp b/Kernel/core/cpu.cpp index 7b2c8608..3d507af5 100644 --- a/Kernel/core/cpu.cpp +++ b/Kernel/core/cpu.cpp @@ -24,11 +24,11 @@ #include "../kernel.h" -#if defined(a64) +#if defined(__amd64__) using namespace CPU::x64; -#elif defined(a32) +#elif defined(__i386__) using namespace CPU::x32; -#elif defined(aa64) +#elif defined(__aarch64__) #endif namespace CPU @@ -40,19 +40,19 @@ namespace CPU static char Vendor[13] = {0}; if (Vendor[0] != 0) return Vendor; -#if defined(a64) +#if defined(__amd64__) uint32_t eax, ebx, ecx, edx; x64::cpuid(0x0, &eax, &ebx, &ecx, &edx); memcpy(Vendor + 0, &ebx, 4); memcpy(Vendor + 4, &edx, 4); memcpy(Vendor + 8, &ecx, 4); -#elif defined(a32) +#elif defined(__i386__) uint32_t eax, ebx, ecx, edx; x32::cpuid(0x0, &eax, &ebx, &ecx, &edx); memcpy(Vendor + 0, &ebx, 4); memcpy(Vendor + 4, &edx, 4); memcpy(Vendor + 8, &ecx, 4); -#elif defined(aa64) +#elif defined(__aarch64__) #error "Not implemented" #endif return Vendor; @@ -63,7 +63,7 @@ namespace CPU static char Name[49] = {0}; if (Name[0] != 0) return Name; -#if defined(a64) +#if defined(__amd64__) uint32_t eax, ebx, ecx, edx; x64::cpuid(0x80000002, &eax, &ebx, &ecx, &edx); memcpy(Name + 0, &eax, 4); @@ -80,7 +80,7 @@ namespace CPU memcpy(Name + 36, &ebx, 4); memcpy(Name + 40, &ecx, 4); memcpy(Name + 44, &edx, 4); -#elif defined(a32) +#elif defined(__i386__) uint32_t eax, ebx, ecx, edx; x32::cpuid(0x80000002, &eax, &ebx, &ecx, &edx); memcpy(Name + 0, &eax, 4); @@ -97,7 +97,7 @@ namespace CPU memcpy(Name + 36, &ebx, 4); memcpy(Name + 40, &ecx, 4); memcpy(Name + 44, &edx, 4); -#elif defined(aa64) +#elif defined(__aarch64__) #error "Not implemented" #endif return Name; @@ -108,7 +108,7 @@ namespace CPU static char Hypervisor[13] = {0}; if (Hypervisor[0] != 0) return Hypervisor; -#if defined(a64) +#if defined(__amd64__) uint32_t eax, ebx, ecx, edx; x64::cpuid(0x1, &eax, &ebx, &ecx, &edx); if (!(ecx & (1 << 31))) /* Intel & AMD are the same */ @@ -124,7 +124,7 @@ namespace CPU memcpy(Hypervisor + 0, &ebx, 4); memcpy(Hypervisor + 4, &ecx, 4); memcpy(Hypervisor + 8, &edx, 4); -#elif defined(a32) +#elif defined(__i386__) uint32_t eax, ebx, ecx, edx; x32::cpuid(0x1, &eax, &ebx, &ecx, &edx); if (!(ecx & (1 << 31))) /* Intel & AMD are the same */ @@ -140,7 +140,7 @@ namespace CPU memcpy(Hypervisor + 0, &ebx, 4); memcpy(Hypervisor + 4, &ecx, 4); memcpy(Hypervisor + 8, &edx, 4); -#elif defined(aa64) +#elif defined(__aarch64__) #error "Not implemented" #endif return Hypervisor; @@ -153,17 +153,17 @@ namespace CPU case Check: { uintptr_t Flags; -#if defined(a64) +#if defined(__amd64__) asmv("pushfq"); asmv("popq %0" : "=r"(Flags)); return Flags & (1 << 9); -#elif defined(a32) +#elif defined(__i386__) asmv("pushfl"); asmv("popl %0" : "=r"(Flags)); return Flags & (1 << 9); -#elif defined(aa64) +#elif defined(__aarch64__) asmv("mrs %0, cpsr" : "=r"(Flags)); return Flags & (1 << 7); @@ -171,18 +171,18 @@ namespace CPU } case Enable: { -#if defined(a86) +#if defined(__amd64__) || defined(__i386__) asmv("sti"); -#elif defined(aa64) +#elif defined(__aarch64__) asmv("cpsie i"); #endif return true; } case Disable: { -#if defined(a86) +#if defined(__amd64__) || defined(__i386__) asmv("cli"); -#elif defined(aa64) +#elif defined(__aarch64__) asmv("cpsid i"); #endif return true; @@ -197,7 +197,7 @@ namespace CPU void *PageTable(void *PT) { void *ret; -#if defined(a64) +#if defined(__amd64__) asmv("movq %%cr3, %0" : "=r"(ret)); @@ -208,7 +208,7 @@ namespace CPU : "r"(PT) : "memory"); } -#elif defined(a32) +#elif defined(__i386__) asmv("movl %%cr3, %0" : "=r"(ret)); @@ -219,7 +219,7 @@ namespace CPU : "r"(PT) : "memory"); } -#elif defined(aa64) +#elif defined(__aarch64__) asmv("mrs %0, ttbr0_el1" : "=r"(ret)); @@ -392,13 +392,13 @@ namespace CPU { // TODO: Get the counter from the x2APIC or any other timer that is available. (TSC is not available on all CPUs) uint64_t Counter; -#if defined(a86) +#if defined(__amd64__) || defined(__i386__) uint32_t eax, edx; asmv("rdtsc" : "=a"(eax), "=d"(edx)); Counter = ((uint64_t)eax) | (((uint64_t)edx) << 32); -#elif defined(aa64) +#elif defined(__aarch64__) asmv("mrs %0, cntvct_el0" : "=r"(Counter)); #endif @@ -413,7 +413,7 @@ namespace CPU #warning "TODO: Proper SIMD support" return SIMD_NONE; -#if defined(a86) +#if defined(__amd64__) || defined(__i386__) static uint64_t SIMDType = SIMD_NONE; if (likely(SIMDType != SIMD_NONE)) @@ -495,7 +495,7 @@ namespace CPU } debug("No SIMD support."); -#endif // a64 || a32 +#endif // __amd64__ || __i386__ return SIMD_NONE; } @@ -504,7 +504,7 @@ namespace CPU if (unlikely(!SSEEnabled)) return false; -#if defined(a86) +#if defined(__amd64__) || defined(__i386__) if (strcmp(CPU::Vendor(), x86_CPUID_VENDOR_AMD) == 0) { CPU::x86::AMD::CPUID0x00000001 cpuid; @@ -545,7 +545,7 @@ namespace CPU else if (Type == SIMD_SSE) return cpuid.EDX.SSE; } -#endif // a64 || a32 +#endif // __amd64__ || __i386__ return false; } } diff --git a/Kernel/core/dsdt.cpp b/Kernel/core/dsdt.cpp index 0cb5c340..9d413c3b 100644 --- a/Kernel/core/dsdt.cpp +++ b/Kernel/core/dsdt.cpp @@ -22,9 +22,9 @@ #include #include -#if defined(a64) +#if defined(__amd64__) #include "../arch/amd64/cpu/apic.hpp" -#elif defined(a32) +#elif defined(__i386__) #include "../arch/i386/cpu/apic.hpp" #endif #include "../kernel.h" diff --git a/Kernel/core/interrupts_manager.cpp b/Kernel/core/interrupts_manager.cpp index a37163df..15f05f19 100644 --- a/Kernel/core/interrupts_manager.cpp +++ b/Kernel/core/interrupts_manager.cpp @@ -23,15 +23,15 @@ #include #include -#if defined(a64) +#if defined(__amd64__) #include "../arch/amd64/cpu/apic.hpp" #include "../arch/amd64/cpu/gdt.hpp" #include "../arch/amd64/cpu/idt.hpp" -#elif defined(a32) +#elif defined(__i386__) #include "../arch/i386/cpu/apic.hpp" #include "../arch/i386/cpu/gdt.hpp" #include "../arch/i386/cpu/idt.hpp" -#elif defined(aa64) +#elif defined(__aarch64__) #endif #include "../kernel.h" @@ -106,15 +106,15 @@ namespace Interrupts std::atomic_uint SortEvents = SORT_START / SORT_DIVIDER; constexpr uint32_t SORT_ITR = (SORT_START * 100) / SORT_DIVIDER; -#if defined(a86) +#if defined(__amd64__) || defined(__i386__) /* APIC::APIC */ void *apic[MAX_CPU] = {nullptr}; /* APIC::Timer */ void *apicTimer[MAX_CPU] = {nullptr}; -#elif defined(aa64) +#elif defined(__aarch64__) #endif void Initialize(int Core) { -#if defined(a64) +#if defined(__amd64__) GlobalDescriptorTable::Init(Core); InterruptDescriptorTable::Init(Core); CPUData *CoreData = GetCPU(Core); @@ -133,7 +133,7 @@ namespace Interrupts debug("Stack for core %d is %#lx (Address: %#lx)", Core, CoreData->Stack, CoreData->Stack - STACK_SIZE); InitializeSystemCalls(); -#elif defined(a32) +#elif defined(__i386__) GlobalDescriptorTable::Init(Core); InterruptDescriptorTable::Init(Core); CPUData *CoreData = GetCPU(Core); @@ -151,14 +151,14 @@ namespace Interrupts } debug("Stack for core %d is %#lx (Address: %#lx)", Core, CoreData->Stack, CoreData->Stack - STACK_SIZE); -#elif defined(aa64) +#elif defined(__aarch64__) warn("aarch64 is not supported yet"); #endif } void Enable(int Core) { -#if defined(a86) +#if defined(__amd64__) || defined(__i386__) if (((ACPI::MADT *)PowerManager->GetMADT())->LAPICAddress != nullptr) { // TODO: This function is called by SMP too. Do not initialize timers that doesn't support multiple cores. @@ -171,7 +171,7 @@ namespace Interrupts error("LAPIC not found"); // TODO: PIC } -#elif defined(aa64) +#elif defined(__aarch64__) warn("aarch64 is not supported yet"); #endif CPU::Interrupts(CPU::Enable); @@ -180,14 +180,14 @@ namespace Interrupts void InitializeTimer(int Core) { // TODO: This function is called by SMP too. Do not initialize timers that doesn't support multiple cores. -#if defined(a86) +#if defined(__amd64__) || defined(__i386__) if (apic[Core] != nullptr) apicTimer[Core] = new APIC::Timer((APIC::APIC *)apic[Core]); else { fixme("apic not found"); } -#elif defined(aa64) +#elif defined(__aarch64__) warn("aarch64 is not supported yet"); #endif } @@ -333,12 +333,12 @@ namespace Interrupts public: AutoSwitchPageTable() { -#if defined(a86) +#if defined(__amd64__) || defined(__i386__) asmv("mov %%cr3, %0" : "=r"(Original)); #endif if (likely(Original == KernelPageTable)) return; -#if defined(a86) +#if defined(__amd64__) || defined(__i386__) asmv("mov %0, %%cr3" : : "r"(KernelPageTable)); #endif } @@ -347,7 +347,7 @@ namespace Interrupts { if (likely(Original == KernelPageTable)) return; -#if defined(a86) +#if defined(__amd64__) || defined(__i386__) asmv("mov %0, %%cr3" : : "r"(Original)); #endif } @@ -365,7 +365,7 @@ namespace Interrupts while (it != RegisteredEvents.end()) { int iEvNum = it->IRQ; -#if defined(a86) +#if defined(__amd64__) || defined(__i386__) iEvNum += CPU::x86::IRQ0; #endif if (iEvNum == s_cst(int, Frame->InterruptNumber)) @@ -402,7 +402,7 @@ namespace Interrupts { KernelPageTable->Update(); CPU::SchedulerFrame *Frame = (CPU::SchedulerFrame *)Data; -#if defined(a86) +#if defined(__amd64__) || defined(__i386__) assert(Frame->InterruptNumber == CPU::x86::IRQ16); #else assert(Frame->InterruptNumber == 16); diff --git a/Kernel/core/memory/find_bitmap_region.cpp b/Kernel/core/memory/find_bitmap_region.cpp index 06f02106..8ce249b2 100644 --- a/Kernel/core/memory/find_bitmap_region.cpp +++ b/Kernel/core/memory/find_bitmap_region.cpp @@ -75,7 +75,7 @@ namespace Memory } } -#if defined(a86) +#if defined(__amd64__) || defined(__i386__) if (bInfo.RSDP) { RSDPStart = (uintptr_t)bInfo.RSDP; @@ -101,7 +101,7 @@ namespace Memory } #endif } -#elif defined(aa64) +#elif defined(__aarch64__) #endif for (uint64_t i = 0; i < bInfo.Memory.Entries; i++) diff --git a/Kernel/core/memory/heap_allocators/Xalloc/XallocV1.cpp b/Kernel/core/memory/heap_allocators/Xalloc/XallocV1.cpp index bc38d1ff..dbdfbaa2 100644 --- a/Kernel/core/memory/heap_allocators/Xalloc/XallocV1.cpp +++ b/Kernel/core/memory/heap_allocators/Xalloc/XallocV1.cpp @@ -121,7 +121,7 @@ namespace Xalloc { if (this->SMAPUsed) { -#if defined(a86) +#if defined(__amd64__) || defined(__i386__) asm volatile("stac" :: : "cc"); #endif @@ -132,7 +132,7 @@ namespace Xalloc { if (this->SMAPUsed) { -#if defined(a86) +#if defined(__amd64__) || defined(__i386__) asm volatile("clac" :: : "cc"); #endif diff --git a/Kernel/core/memory/memory.cpp b/Kernel/core/memory/memory.cpp index f9918d01..9e0923fb 100644 --- a/Kernel/core/memory/memory.cpp +++ b/Kernel/core/memory/memory.cpp @@ -56,7 +56,7 @@ NIF void tracepagetable(PageTable *pt) { for (int i = 0; i < 512; i++) { -#if defined(a64) +#if defined(__amd64__) if (pt->Entries[i].Present) debug("Entry %03d: %x %x %x %x %x %x %x %p-%#llx", i, pt->Entries[i].Present, pt->Entries[i].ReadWrite, @@ -64,8 +64,8 @@ NIF void tracepagetable(PageTable *pt) pt->Entries[i].CacheDisable, pt->Entries[i].Accessed, pt->Entries[i].ExecuteDisable, pt->Entries[i].Address << 12, pt->Entries[i]); -#elif defined(a32) -#elif defined(aa64) +#elif defined(__i386__) +#elif defined(__aarch64__) #endif } } @@ -257,15 +257,15 @@ NIF void CreatePageTable(PageTable *pt) if (PSESupport) { -#if defined(a64) +#if defined(__amd64__) CPU::x64::CR4 cr4 = CPU::x64::readcr4(); cr4.PSE = 1; CPU::x64::writecr4(cr4); -#elif defined(a32) +#elif defined(__i386__) CPU::x32::CR4 cr4 = CPU::x32::readcr4(); cr4.PSE = 1; CPU::x32::writecr4(cr4); -#elif defined(aa64) +#elif defined(__aarch64__) #endif trace("PSE Support Enabled"); } @@ -289,7 +289,7 @@ NIF void CreatePageTable(PageTable *pt) NIF void InitializeMemoryManagement() { #ifdef DEBUG -#ifndef a32 +#ifndef __i386__ for (uint64_t i = 0; i < bInfo.Memory.Entries; i++) { uintptr_t Base = r_cst(uintptr_t, bInfo.Memory.Entry[i].BaseAddress); @@ -333,7 +333,7 @@ NIF void InitializeMemoryManagement() End, Type); } -#endif // a32 +#endif // __i386__ #endif // DEBUG trace("Initializing Physical Memory Manager"); // KernelAllocator = Physical(); <- Already called in the constructor diff --git a/Kernel/core/memory/page_table.cpp b/Kernel/core/memory/page_table.cpp index 55e65b14..36620601 100644 --- a/Kernel/core/memory/page_table.cpp +++ b/Kernel/core/memory/page_table.cpp @@ -9,9 +9,9 @@ namespace Memory { void PageTable::Update() { -#if defined(a86) +#if defined(__amd64__) || defined(__i386__) asmv("mov %0, %%cr3" ::"r"(this)); -#elif defined(aa64) +#elif defined(__aarch64__) asmv("msr ttbr0_el1, %0" ::"r"(this)); #endif } @@ -24,7 +24,7 @@ namespace Memory memcpy(NewTable, this, sizeof(PageTable)); debug("Forking page table %#lx to %#lx", this, NewTable); -#if defined(a64) +#if defined(__amd64__) for (size_t i = 0; i < sizeof(Entries) / sizeof(Entries[0]); i++) { PageMapLevel4 *PML4 = &Entries[i]; diff --git a/Kernel/core/memory/pmi.cpp b/Kernel/core/memory/pmi.cpp index 9d9c3ddd..d4a9ca39 100644 --- a/Kernel/core/memory/pmi.cpp +++ b/Kernel/core/memory/pmi.cpp @@ -22,7 +22,7 @@ namespace Memory Virtual::PageMapIndexer::PageMapIndexer(uintptr_t VirtualAddress) { uintptr_t Address = VirtualAddress; -#if defined(a64) +#if defined(__amd64__) Address >>= 12; this->PTEIndex = Address & 0x1FF; Address >>= 9; @@ -31,12 +31,12 @@ namespace Memory this->PDPTEIndex = Address & 0x1FF; Address >>= 9; this->PMLIndex = Address & 0x1FF; -#elif defined(a32) +#elif defined(__i386__) Address >>= 12; this->PTEIndex = Address & 0x3FF; Address >>= 10; this->PDEIndex = Address & 0x3FF; -#elif defined(aa64) +#elif defined(__aarch64__) #endif if (VirtualAddress > PAGE_SIZE) @@ -44,7 +44,7 @@ namespace Memory assert( this->PTEIndex != 0 || this->PDEIndex != 0 -#if defined(a64) +#if defined(__amd64__) || this->PDPTEIndex != 0 || this->PMLIndex != 0 #endif diff --git a/Kernel/core/memory/reserve_essentials.cpp b/Kernel/core/memory/reserve_essentials.cpp index 08e60787..2c9b5b00 100644 --- a/Kernel/core/memory/reserve_essentials.cpp +++ b/Kernel/core/memory/reserve_essentials.cpp @@ -90,10 +90,10 @@ namespace Memory Elf_Sym *Symbols = nullptr; uint8_t *StringAddress = nullptr; -#if defined(a64) || defined(aa64) +#if defined(__amd64__) || defined(__aarch64__) Elf64_Xword SymbolSize = 0; Elf64_Xword StringSize = 0; -#elif defined(a32) +#elif defined(__i386__) Elf32_Word SymbolSize = 0; Elf32_Word StringSize = 0; #endif @@ -149,7 +149,7 @@ namespace Memory TO_PAGES(bInfo.Modules[i].Size)); } -#if defined(a86) +#if defined(__amd64__) || defined(__i386__) if (bInfo.RSDP) { debug("Reserving RSDT region %#lx-%#lx...", bInfo.RSDP, @@ -201,7 +201,7 @@ namespace Memory this->ReservePages(SDTHdr, TO_PAGES(SDTHdr->Length)); } } -#elif defined(aa64) +#elif defined(__aarch64__) #endif } } diff --git a/Kernel/core/memory/vma.cpp b/Kernel/core/memory/vma.cpp index a315533c..03074b73 100644 --- a/Kernel/core/memory/vma.cpp +++ b/Kernel/core/memory/vma.cpp @@ -241,9 +241,9 @@ namespace Memory pte->CopyOnWrite = false; debug("PFA %#lx is CoW (pt %#lx, flags %#lx)", PFA, this->Table, pte->raw); -#if defined(a64) +#if defined(__amd64__) CPU::x64::invlpg((void *)PFA); -#elif defined(a32) +#elif defined(__i386__) CPU::x32::invlpg((void *)PFA); #endif return true; @@ -303,7 +303,7 @@ namespace Memory void *AddressToMap = (void *)((uintptr_t)ap.Address + (i * PAGE_SIZE)); void *RealAddress = (void *)((uintptr_t)Address + (i * PAGE_SIZE)); -#if defined(a86) +#if defined(__amd64__) || defined(__i386__) PageTableEntry *pte = vmm.GetPTE(AddressToMap); uintptr_t Flags = 0; Flags |= pte->Present ? (uintptr_t)PTFlag::P : 0; diff --git a/Kernel/core/panic/diag.cpp b/Kernel/core/panic/diag.cpp index 5d05ec1d..815df8e9 100644 --- a/Kernel/core/panic/diag.cpp +++ b/Kernel/core/panic/diag.cpp @@ -28,13 +28,13 @@ #include #include -#if defined(a64) +#if defined(__amd64__) #include "../../arch/amd64/cpu/gdt.hpp" #include "../arch/amd64/cpu/apic.hpp" -#elif defined(a32) +#elif defined(__i386__) #include "../../arch/i386/cpu/gdt.hpp" #include "../arch/i386/cpu/apic.hpp" -#elif defined(aa64) +#elif defined(__aarch64__) #endif #include "../../kernel.h" diff --git a/Kernel/core/panic/handler.cpp b/Kernel/core/panic/handler.cpp index 75272501..5ca3f022 100644 --- a/Kernel/core/panic/handler.cpp +++ b/Kernel/core/panic/handler.cpp @@ -28,13 +28,13 @@ #include #include -#if defined(a64) +#if defined(__amd64__) #include "../../arch/amd64/cpu/gdt.hpp" #include "../arch/amd64/cpu/apic.hpp" -#elif defined(a32) +#elif defined(__i386__) #include "../../arch/i386/cpu/gdt.hpp" #include "../arch/i386/cpu/apic.hpp" -#elif defined(aa64) +#elif defined(__aarch64__) #endif #include "../../kernel.h" @@ -100,7 +100,7 @@ nsa void HaltAllCores() if (SMP::CPUCores <= 1) return; -#if defined(a86) +#if defined(__amd64__) || defined(__i386__) if (Interrupts::apic[0] == nullptr) return; @@ -131,7 +131,7 @@ nsa void HaltAllCores() ((APIC::APIC *)Interrupts::apic[i])->ICR(icr); } } -#elif defined(aa64) +#elif defined(__aarch64__) #endif } @@ -187,7 +187,7 @@ nsa __noreturn void HandleUnrecoverableException(CPU::ExceptionFrame *Frame) ExPrint("\x1b[0m-----------------------------------------------\n"); ExPrint("\x1b[30;41mUnrecoverable exception %#lx on CPU %d\n", Frame->InterruptNumber, core->ID); -#if defined(a86) +#if defined(__amd64__) || defined(__i386__) ExPrint("CR0=%#lx CR2=%#lx CR3=%#lx CR4=%#lx CR8=%#lx\n", Frame->cr0, Frame->cr2, Frame->cr3, Frame->cr4, Frame->cr8); ExPrint("DR0=%#lx DR1=%#lx DR2=%#lx DR3=%#lx DR6=%#lx DR7=%#lx\n", @@ -195,29 +195,29 @@ nsa __noreturn void HandleUnrecoverableException(CPU::ExceptionFrame *Frame) ExPrint("GS=%#lx FS=%#lx ES=%#lx DS=%#lx SS=%#lx CS=%#lx\n", Frame->gs, Frame->fs, Frame->es, Frame->ds, Frame->ss, Frame->cs); #endif -#if defined(a64) +#if defined(__amd64__) ExPrint("R8=%#lx R9=%#lx R10=%#lx R11=%#lx R12=%#lx R13=%#lx R14=%#lx R15=%#lx\n", Frame->r8, Frame->r9, Frame->r10, Frame->r11, Frame->r12, Frame->r13, Frame->r14, Frame->r15); #endif -#if defined(a86) +#if defined(__amd64__) || defined(__i386__) ExPrint("AX=%#lx BX=%#lx CX=%#lx DX=%#lx SI=%#lx DI=%#lx BP=%#lx SP=%#lx\n", -#ifdef a64 +#ifdef __amd64__ Frame->rax, Frame->rbx, Frame->rcx, Frame->rdx, Frame->rsi, Frame->rdi, Frame->rbp, Frame->rsp); #else Frame->eax, Frame->ebx, Frame->ecx, Frame->edx, Frame->esi, Frame->edi, Frame->ebp, Frame->esp); -#endif /* a64 */ +#endif /* __amd64__ */ ExPrint("IP=%#lx FL=%#lx INT=%#lx ERR=%#lx\n", -#ifdef a64 +#ifdef __amd64__ Frame->rip, Frame->rflags.raw, #else Frame->eip, Frame->eflags.raw, -#endif /* a64 */ +#endif /* __amd64__ */ Frame->InterruptNumber, Frame->ErrorCode); #endif /* a86 */ @@ -233,14 +233,14 @@ nsa __noreturn void HandleExceptionInsideException(CPU::ExceptionFrame *Frame) ExPrint("\x1b[0m-----------------------------------------------\n"); ExPrint("Exception inside exception: %#lx at %#lx\n", Frame->InterruptNumber, -#if defined(a64) +#if defined(__amd64__) Frame->rip); -#elif defined(a32) +#elif defined(__i386__) Frame->eip); -#elif defined(aa64) +#elif defined(__aarch64__) Frame->pc); #endif -#if defined(a86) +#if defined(__amd64__) || defined(__i386__) ExPrint("CR0=%#lx CR2=%#lx CR3=%#lx CR4=%#lx CR8=%#lx\n", Frame->cr0, Frame->cr2, Frame->cr3, Frame->cr4, Frame->cr8); ExPrint("DR0=%#lx DR1=%#lx DR2=%#lx DR3=%#lx DR6=%#lx DR7=%#lx\n", @@ -248,29 +248,29 @@ nsa __noreturn void HandleExceptionInsideException(CPU::ExceptionFrame *Frame) ExPrint("GS=%#lx FS=%#lx ES=%#lx DS=%#lx SS=%#lx CS=%#lx\n", Frame->gs, Frame->fs, Frame->es, Frame->ds, Frame->ss, Frame->cs); #endif -#if defined(a64) +#if defined(__amd64__) ExPrint("R8=%#lx R9=%#lx R10=%#lx R11=%#lx R12=%#lx R13=%#lx R14=%#lx R15=%#lx\n", Frame->r8, Frame->r9, Frame->r10, Frame->r11, Frame->r12, Frame->r13, Frame->r14, Frame->r15); #endif -#if defined(a86) +#if defined(__amd64__) || defined(__i386__) ExPrint("AX=%#lx BX=%#lx CX=%#lx DX=%#lx SI=%#lx DI=%#lx BP=%#lx SP=%#lx\n", -#ifdef a64 +#ifdef __amd64__ Frame->rax, Frame->rbx, Frame->rcx, Frame->rdx, Frame->rsi, Frame->rdi, Frame->rbp, Frame->rsp); #else Frame->eax, Frame->ebx, Frame->ecx, Frame->edx, Frame->esi, Frame->edi, Frame->ebp, Frame->esp); -#endif /* a64 */ +#endif /* __amd64__ */ ExPrint("IP=%#lx FL=%#lx INT=%#lx ERR=%#lx\n", -#ifdef a64 +#ifdef __amd64__ Frame->rip, Frame->rflags.raw, #else Frame->eip, Frame->eflags.raw, -#endif /* a64 */ +#endif /* __amd64__ */ Frame->InterruptNumber, Frame->ErrorCode); #endif /* a86 */ Display->UpdateBuffer(); diff --git a/Kernel/core/panic/kbd/ehci.cpp b/Kernel/core/panic/kbd/ehci.cpp index bfac7f11..1bcb5d92 100644 --- a/Kernel/core/panic/kbd/ehci.cpp +++ b/Kernel/core/panic/kbd/ehci.cpp @@ -27,10 +27,10 @@ #include #include -#if defined(a64) +#if defined(__amd64__) #include "../../../arch/amd64/cpu/gdt.hpp" -#elif defined(a32) -#elif defined(aa64) +#elif defined(__i386__) +#elif defined(__aarch64__) #endif #include "../../../kernel.h" diff --git a/Kernel/core/panic/kbd/keyboard.cpp b/Kernel/core/panic/kbd/keyboard.cpp index f5f4a4ac..cac49424 100644 --- a/Kernel/core/panic/kbd/keyboard.cpp +++ b/Kernel/core/panic/kbd/keyboard.cpp @@ -31,10 +31,10 @@ #include #include -#if defined(a64) +#if defined(__amd64__) #include "../../../arch/amd64/cpu/gdt.hpp" -#elif defined(a32) -#elif defined(aa64) +#elif defined(__i386__) +#elif defined(__aarch64__) #endif #include "../../../kernel.h" diff --git a/Kernel/core/panic/kbd/ps2.cpp b/Kernel/core/panic/kbd/ps2.cpp index d0e8ff57..e06befd4 100644 --- a/Kernel/core/panic/kbd/ps2.cpp +++ b/Kernel/core/panic/kbd/ps2.cpp @@ -28,10 +28,10 @@ #include #include -#if defined(a64) +#if defined(__amd64__) #include "../../../arch/amd64/cpu/gdt.hpp" -#elif defined(a32) -#elif defined(aa64) +#elif defined(__i386__) +#elif defined(__aarch64__) #endif #include "../../../kernel.h" @@ -107,7 +107,7 @@ nsa static inline int GetLetterFromScanCode(uint8_t ScanCode) nsa void CrashPS2KeyboardDriver::PS2Wait(bool Output) { -#if defined(a86) +#if defined(__amd64__) || defined(__i386__) TimeoutCallNumber++; int timeout = 100000; PS2_STATUSES status = {.Raw = inb(PS2_STATUS)}; @@ -153,7 +153,7 @@ nsa CrashPS2KeyboardDriver::CrashPS2KeyboardDriver() : Interrupts::Handler(1) /* /* Dots will be printed at the bottom of the screen as a progress bar. */ ExPrint("\x1b[%d;%dH", (Display->GetWidth / CrashFontRenderer.CurrentFont->GetInfo().Width) - 2, 0); -#if defined(a86) +#if defined(__amd64__) || defined(__i386__) /* Disable port 1 & 2 */ { @@ -355,14 +355,14 @@ nsa CrashPS2KeyboardDriver::CrashPS2KeyboardDriver() : Interrupts::Handler(1) /* ExPrint("."); -#endif // defined(a86) +#endif // defined(__amd64__) || defined(__i386__) CPU::Interrupts(CPU::Enable); } nsa void CrashPS2KeyboardDriver::OnInterruptReceived(CPU::TrapFrame *) { -#if defined(a86) +#if defined(__amd64__) || defined(__i386__) uint8_t scanCode = inb(PS2_DATA); if (scanCode == KEY_D_TAB || @@ -412,5 +412,5 @@ nsa void CrashPS2KeyboardDriver::OnInterruptReceived(CPU::TrapFrame *) } Display->UpdateBuffer(); /* Update as we type. */ } -#endif // a64 || a32 +#endif // __amd64__ || __i386__ } diff --git a/Kernel/core/panic/kbd/uhci.cpp b/Kernel/core/panic/kbd/uhci.cpp index 641dd950..13144285 100644 --- a/Kernel/core/panic/kbd/uhci.cpp +++ b/Kernel/core/panic/kbd/uhci.cpp @@ -27,10 +27,10 @@ #include #include -#if defined(a64) +#if defined(__amd64__) #include "../../../arch/amd64/cpu/gdt.hpp" -#elif defined(a32) -#elif defined(aa64) +#elif defined(__i386__) +#elif defined(__aarch64__) #endif #include "../../../kernel.h" diff --git a/Kernel/core/panic/kbd/xhci.cpp b/Kernel/core/panic/kbd/xhci.cpp index 3070d2ad..e5dc31a8 100644 --- a/Kernel/core/panic/kbd/xhci.cpp +++ b/Kernel/core/panic/kbd/xhci.cpp @@ -27,10 +27,10 @@ #include #include -#if defined(a64) +#if defined(__amd64__) #include "../../../arch/amd64/cpu/gdt.hpp" -#elif defined(a32) -#elif defined(aa64) +#elif defined(__i386__) +#elif defined(__aarch64__) #endif #include "../../../kernel.h" diff --git a/Kernel/core/panic/ui.cpp b/Kernel/core/panic/ui.cpp index 6df99199..73b95fc7 100644 --- a/Kernel/core/panic/ui.cpp +++ b/Kernel/core/panic/ui.cpp @@ -27,13 +27,13 @@ #include #include -#if defined(a64) +#if defined(__amd64__) #include "../../arch/amd64/cpu/gdt.hpp" #include "../arch/amd64/cpu/apic.hpp" -#elif defined(a32) +#elif defined(__i386__) #include "../../arch/i386/cpu/gdt.hpp" #include "../arch/i386/cpu/apic.hpp" -#elif defined(aa64) +#elif defined(__aarch64__) #endif #include "../../kernel.h" @@ -143,11 +143,11 @@ nsa const char *ExGetKSymbol(CPU::ExceptionFrame *Frame) Frame->rip > (uintptr_t)&_kernel_end) return ""; -#if defined(a64) +#if defined(__amd64__) return ExGetKSymbolByAddress(Frame->rip); -#elif defined(a32) +#elif defined(__i386__) return ExGetKSymbolByAddress(Frame->eip); -#elif defined(aa64) +#elif defined(__aarch64__) return ExGetKSymbolByAddress(Frame->pc); #endif } @@ -299,23 +299,23 @@ nsa void DisplayMainScreen(CPU::ExceptionFrame *Frame) ExPrint("\nWe're sorry, but the system has encountered a critical error and needs to restart.\n"); ExPrint("\nError: %s (%s 0x%x)\n", -#if defined(a86) +#if defined(__amd64__) || defined(__i386__) x86Exceptions[Frame->InterruptNumber].Name, x86Exceptions[Frame->InterruptNumber].Mnemonic, -#elif defined(aa64) +#elif defined(__aarch64__) #error "AA64 not implemented" #endif Frame->InterruptNumber); -#if defined(a86) +#if defined(__amd64__) || defined(__i386__) ExPrint("Cause: %s\n", x86Exceptions[Frame->InterruptNumber].Cause); #endif ExPrint("Exception occurred in function %s (%#lx)\n", ExGetKSymbol(Frame), -#if defined(a64) +#if defined(__amd64__) Frame->rip); -#elif defined(a32) +#elif defined(__i386__) Frame->eip); -#elif defined(aa64) +#elif defined(__aarch64__) Frame->pc); #endif @@ -431,9 +431,9 @@ nsa void DisplayStackScreen(CPU::ExceptionFrame *Frame) { Memory::Virtual vmm; struct StackFrame *sf; -#if defined(a64) +#if defined(__amd64__) sf = (struct StackFrame *)Frame->rbp; -#elif defined(a32) +#elif defined(__i386__) sf = (struct StackFrame *)Frame->ebp; #endif @@ -455,11 +455,11 @@ nsa void DisplayStackScreen(CPU::ExceptionFrame *Frame) /* FIXME: Get symbol offset more efficiently */ uintptr_t fIP; -#if defined(a64) +#if defined(__amd64__) fIP = Frame->rip; -#elif defined(a32) +#elif defined(__i386__) fIP = Frame->eip; -#elif defined(aa64) +#elif defined(__aarch64__) fIP = Frame->pc; #endif diff --git a/Kernel/core/panic/user.cpp b/Kernel/core/panic/user.cpp index 115b2cd7..9385045b 100644 --- a/Kernel/core/panic/user.cpp +++ b/Kernel/core/panic/user.cpp @@ -21,10 +21,10 @@ #include #include -#if defined(a64) +#if defined(__amd64__) #include "../../arch/amd64/cpu/gdt.hpp" -#elif defined(a32) -#elif defined(aa64) +#elif defined(__i386__) +#elif defined(__aarch64__) #endif #include "../../kernel.h" @@ -32,26 +32,26 @@ #ifdef DEBUG nsa void dbgPrint(CPU::ExceptionFrame *Frame) { -#if defined(a64) +#if defined(__amd64__) debug("FS=%#lx GS=%#lx SS=%#lx CS=%#lx DS=%#lx", Frame->fs, Frame->gs, Frame->ss, Frame->cs, Frame->ds); debug("R8=%#lx R9=%#lx R10=%#lx R11=%#lx", Frame->r8, Frame->r9, Frame->r10, Frame->r11); debug("R12=%#lx R13=%#lx R14=%#lx R15=%#lx", Frame->r12, Frame->r13, Frame->r14, Frame->r15); debug("RAX=%#lx RBX=%#lx RCX=%#lx RDX=%#lx", Frame->rax, Frame->rbx, Frame->rcx, Frame->rdx); debug("RSI=%#lx RDI=%#lx RBP=%#lx RSP=%#lx", Frame->rsi, Frame->rdi, Frame->rbp, Frame->rsp); debug("RIP=%#lx RFL=%#lx INT=%#lx ERR=%#lx", Frame->rip, Frame->rflags.raw, Frame->InterruptNumber, Frame->ErrorCode); -#elif defined(a32) +#elif defined(__i386__) debug("FS=%#x GS=%#x CS=%#x DS=%#x", Frame->fs, Frame->gs, Frame->cs, Frame->ds); debug("EAX=%#x EBX=%#x ECX=%#x EDX=%#x", Frame->eax, Frame->ebx, Frame->ecx, Frame->edx); debug("ESI=%#x EDI=%#x EBP=%#x ESP=%#x", Frame->esi, Frame->edi, Frame->ebp, Frame->esp); debug("EIP=%#x EFL=%#x INT=%#x ERR=%#x", Frame->eip, Frame->eflags.raw, Frame->InterruptNumber, Frame->ErrorCode); -#elif defined(aa64) +#elif defined(__aarch64__) #endif -#if defined(a86) +#if defined(__amd64__) || defined(__i386__) debug("CR2=%#lx CR3=%#lx", Frame->cr2, Frame->cr3); -#endif // defined(a86) +#endif // defined(__amd64__) || defined(__i386__) -#if defined(a64) +#if defined(__amd64__) debug("RFL: CF:%s PF:%s AF:%s ZF:%s SF:%s TF:%s IF:%s DF:%s OF:%s IOPL:%s NT:%s RF:%s VM:%s AC:%s VIF:%s VIP:%s ID:%s AlwaysOne:%d R0:%#x R1:%#x R2:%#x R3:%#x", Frame->rflags.CF ? "True " : "False", Frame->rflags.PF ? "True " : "False", Frame->rflags.AF ? "True " : "False", Frame->rflags.ZF ? "True " : "False", Frame->rflags.SF ? "True " : "False", Frame->rflags.TF ? "True " : "False", Frame->rflags.IF ? "True " : "False", Frame->rflags.DF ? "True " : "False", @@ -59,7 +59,7 @@ nsa void dbgPrint(CPU::ExceptionFrame *Frame) Frame->rflags.VM ? "True " : "False", Frame->rflags.AC ? "True " : "False", Frame->rflags.VIF ? "True " : "False", Frame->rflags.VIP ? "True " : "False", Frame->rflags.ID ? "True " : "False", Frame->rflags.AlwaysOne, Frame->rflags.Reserved0, Frame->rflags.Reserved1, Frame->rflags.Reserved2, Frame->rflags.Reserved3); -#elif defined(a32) +#elif defined(__i386__) debug("EFL: CF:%s PF:%s AF:%s ZF:%s SF:%s TF:%s IF:%s DF:%s OF:%s IOPL:%s NT:%s RF:%s VM:%s AC:%s VIF:%s VIP:%s ID:%s AlwaysOne:%d R0:%#x R1:%#x R2:%#x", Frame->eflags.CF ? "True " : "False", Frame->eflags.PF ? "True " : "False", Frame->eflags.AF ? "True " : "False", Frame->eflags.ZF ? "True " : "False", Frame->eflags.SF ? "True " : "False", Frame->eflags.TF ? "True " : "False", Frame->eflags.IF ? "True " : "False", Frame->eflags.DF ? "True " : "False", @@ -67,7 +67,7 @@ nsa void dbgPrint(CPU::ExceptionFrame *Frame) Frame->eflags.VM ? "True " : "False", Frame->eflags.AC ? "True " : "False", Frame->eflags.VIF ? "True " : "False", Frame->eflags.VIP ? "True " : "False", Frame->eflags.ID ? "True " : "False", Frame->eflags.AlwaysOne, Frame->eflags.Reserved0, Frame->eflags.Reserved1, Frame->eflags.Reserved2); -#elif defined(aa64) +#elif defined(__aarch64__) #endif } #endif diff --git a/Kernel/core/pci.cpp b/Kernel/core/pci.cpp index 6b31d37d..bb8c1be3 100644 --- a/Kernel/core/pci.cpp +++ b/Kernel/core/pci.cpp @@ -1100,7 +1100,7 @@ namespace PCI Manager::Manager() { -#if defined(a86) +#if defined(__amd64__) || defined(__i386__) if (!PowerManager->GetACPI()) { error("ACPI not found"); @@ -1127,7 +1127,7 @@ namespace PCI for (uint32_t Bus = NewDeviceConfig->StartBus; Bus < NewDeviceConfig->EndBus; Bus++) EnumerateBus(NewDeviceConfig->BaseAddress, Bus, dev); } -#elif defined(aa64) +#elif defined(__aarch64__) error("PCI not implemented on aarch64"); #endif } diff --git a/Kernel/core/random.cpp b/Kernel/core/random.cpp index 9c7abe8b..59449d8c 100644 --- a/Kernel/core/random.cpp +++ b/Kernel/core/random.cpp @@ -63,7 +63,7 @@ namespace Random uint16_t rand16() { -#if defined(a86) +#if defined(__amd64__) || defined(__i386__) if (RDRANDFlag) { uint16_t RDRANDValue = 0; @@ -80,7 +80,7 @@ namespace Random uint32_t rand32() { -#if defined(a86) +#if defined(__amd64__) || defined(__i386__) if (RDRANDFlag) { uint32_t RDRANDValue = 0; @@ -97,7 +97,7 @@ namespace Random uint64_t rand64() { -#if defined(a86) +#if defined(__amd64__) || defined(__i386__) if (RDRANDFlag) { uintptr_t RDRANDValue = 0; diff --git a/Kernel/core/stack_check.cpp b/Kernel/core/stack_check.cpp index 7d3c4eb8..43faa107 100644 --- a/Kernel/core/stack_check.cpp +++ b/Kernel/core/stack_check.cpp @@ -60,13 +60,13 @@ EXTERNC __noreturn __no_stack_protector void __stack_chk_fail(void) CPU::PageTable(KernelPageTable); void *Stack = nullptr; -#if defined(a64) +#if defined(__amd64__) asmv("movq %%rsp, %0" : "=r"(Stack)); -#elif defined(a32) +#elif defined(__i386__) asmv("movl %%esp, %0" : "=r"(Stack)); -#elif defined(aa64) +#elif defined(__aarch64__) asmv("mov %%sp, %0" : "=r"(Stack)); #endif diff --git a/Kernel/core/symbols.cpp b/Kernel/core/symbols.cpp index 8f25a513..4af12849 100644 --- a/Kernel/core/symbols.cpp +++ b/Kernel/core/symbols.cpp @@ -101,10 +101,10 @@ namespace SymbolResolver Elf_Sym *Symbols = nullptr; uint8_t *StringAddress = nullptr; -#if defined(a64) || defined(aa64) +#if defined(__amd64__) || defined(__aarch64__) Elf64_Xword SymbolSize = 0; // Elf64_Xword StringSize = 0; -#elif defined(a32) +#elif defined(__i386__) Elf32_Word SymbolSize = 0; // Elf32_Word StringSize = 0; #endif @@ -218,9 +218,9 @@ namespace SymbolResolver } debug("Solving symbols for address: %#llx", ImageAddress); -#if defined(a64) || defined(aa64) +#if defined(__amd64__) || defined(__aarch64__) Elf64_Ehdr *Header = (Elf64_Ehdr *)ImageAddress; -#elif defined(a32) +#elif defined(__i386__) Elf32_Ehdr *Header = (Elf32_Ehdr *)ImageAddress; #endif if (Header->e_ident[0] != 0x7F && diff --git a/Kernel/core/time/hpet.cpp b/Kernel/core/time/hpet.cpp index 44bb699d..5f63c39d 100644 --- a/Kernel/core/time/hpet.cpp +++ b/Kernel/core/time/hpet.cpp @@ -28,12 +28,12 @@ namespace Time { bool HighPrecisionEventTimer::Sleep(size_t Duration, Units Unit) { -#if defined(a64) +#if defined(__amd64__) uint64_t Target = mminq(&hpet->MainCounterValue) + (Duration * ConvertUnit(Unit)) / clk; while (mminq(&hpet->MainCounterValue) < Target) CPU::Pause(); return true; -#elif defined(a32) +#elif defined(__i386__) uint64_t Target = mminl(&hpet->MainCounterValue) + (Duration * ConvertUnit(Unit)) / clk; while (mminl(&hpet->MainCounterValue) < Target) CPU::Pause(); @@ -44,25 +44,25 @@ namespace Time uint64_t HighPrecisionEventTimer::GetCounter() { -#if defined(a64) +#if defined(__amd64__) return mminq(&hpet->MainCounterValue); -#elif defined(a32) +#elif defined(__i386__) return mminl(&hpet->MainCounterValue); #endif } uint64_t HighPrecisionEventTimer::CalculateTarget(uint64_t Target, Units Unit) { -#if defined(a64) +#if defined(__amd64__) return mminq(&hpet->MainCounterValue) + (Target * ConvertUnit(Unit)) / clk; -#elif defined(a32) +#elif defined(__i386__) return mminl(&hpet->MainCounterValue) + (Target * ConvertUnit(Unit)) / clk; #endif } uint64_t HighPrecisionEventTimer::GetNanosecondsSinceClassCreation() { -#if defined(a86) +#if defined(__amd64__) || defined(__i386__) uint64_t Subtraction = this->GetCounter() - this->ClassCreationTime; if (Subtraction <= 0 || this->clk <= 0) return 0; @@ -74,7 +74,7 @@ namespace Time HighPrecisionEventTimer::HighPrecisionEventTimer(void *hpet) { -#if defined(a86) +#if defined(__amd64__) || defined(__i386__) ACPI::ACPI::HPETHeader *HPET_HDR = (ACPI::ACPI::HPETHeader *)hpet; Memory::Virtual vmm; vmm.Map((void *)HPET_HDR->Address.Address, @@ -86,7 +86,7 @@ namespace Time (void *)HPET_HDR->Address.Address); clk = s_cst(uint32_t, (uint64_t)this->hpet->GeneralCapabilities >> 32); KPrint("HPET clock is %u Hz", clk); -#ifdef a64 +#ifdef __amd64__ mmoutq(&this->hpet->GeneralConfiguration, 0); mmoutq(&this->hpet->MainCounterValue, 0); mmoutq(&this->hpet->GeneralConfiguration, 1); diff --git a/Kernel/core/time/time.cpp b/Kernel/core/time/time.cpp index bdb43c07..f3cf7f5c 100644 --- a/Kernel/core/time/time.cpp +++ b/Kernel/core/time/time.cpp @@ -24,7 +24,7 @@ namespace Time Clock ReadClock() { Clock tm; -#if defined(a86) +#if defined(__amd64__) || defined(__i386__) uint32_t t = 0; outb(0x70, 0x00); t = inb(0x71); @@ -45,7 +45,7 @@ namespace Time t = inb(0x71); tm.Year = ((t & 0x0F) + ((t >> 4) * 10)); tm.Counter = 0; -#elif defined(aa64) +#elif defined(__aarch64__) tm.Year = 0; tm.Month = 0; tm.Day = 0; diff --git a/Kernel/core/time/timer.cpp b/Kernel/core/time/timer.cpp index abac6347..7b78150e 100644 --- a/Kernel/core/time/timer.cpp +++ b/Kernel/core/time/timer.cpp @@ -145,7 +145,7 @@ namespace Time void time::FindTimers(void *acpi) { -#if defined(a86) +#if defined(__amd64__) || defined(__i386__) /* TODO: RTC check */ /* TODO: PIT check */ diff --git a/Kernel/core/time/tsc.cpp b/Kernel/core/time/tsc.cpp index 4accaf10..31a2c500 100644 --- a/Kernel/core/time/tsc.cpp +++ b/Kernel/core/time/tsc.cpp @@ -28,7 +28,7 @@ namespace Time { bool TimeStampCounter::Sleep(size_t Duration, Units Unit) { -#if defined(a86) +#if defined(__amd64__) || defined(__i386__) uint64_t Target = this->GetCounter() + (Duration * ConvertUnit(Unit)) / this->clk; while (this->GetCounter() < Target) CPU::Pause(); @@ -38,28 +38,28 @@ namespace Time uint64_t TimeStampCounter::GetCounter() { -#if defined(a86) +#if defined(__amd64__) || defined(__i386__) return CPU::Counter(); #endif } uint64_t TimeStampCounter::CalculateTarget(uint64_t Target, Units Unit) { -#if defined(a86) +#if defined(__amd64__) || defined(__i386__) return uint64_t((this->GetCounter() + (Target * ConvertUnit(Unit))) / this->clk); #endif } uint64_t TimeStampCounter::GetNanosecondsSinceClassCreation() { -#if defined(a86) +#if defined(__amd64__) || defined(__i386__) return uint64_t((this->GetCounter() - this->ClassCreationTime) / this->clk); #endif } TimeStampCounter::TimeStampCounter() { -#if defined(a86) +#if defined(__amd64__) || defined(__i386__) stub; // FIXME: This is not a good way to measure the clock speed uint64_t Start = CPU::Counter(); TimeManager->Sleep(1, Units::Milliseconds); diff --git a/Kernel/core/uart.cpp b/Kernel/core/uart.cpp index 5f376a5e..add8bc2b 100644 --- a/Kernel/core/uart.cpp +++ b/Kernel/core/uart.cpp @@ -23,7 +23,7 @@ bool serialports[8] = {false, false, false, false, false, false, false, false}; std::vector RegisteredEvents; -#if defined(a86) +#if defined(__amd64__) || defined(__i386__) NIF __always_inline inline uint8_t NoProfiler_inportb(uint16_t Port) { uint8_t Result; @@ -56,7 +56,7 @@ namespace UniversalAsynchronousReceiverTransmitter nsa NIF UART::UART(SerialPorts Port) { -#if defined(a86) +#if defined(__amd64__) || defined(__i386__) if (Port == COMNULL) return; @@ -138,7 +138,7 @@ namespace UniversalAsynchronousReceiverTransmitter { if (!this->IsAvailable) return; -#if defined(a86) +#if defined(__amd64__) || defined(__i386__) while ((NoProfiler_inportb(s_cst(uint16_t, Port + 5)) & SERIAL_BUFFER_EMPTY) == 0) ; NoProfiler_outportb(Port, Char); @@ -152,7 +152,7 @@ namespace UniversalAsynchronousReceiverTransmitter { if (!this->IsAvailable) return 0; -#if defined(a86) +#if defined(__amd64__) || defined(__i386__) while ((NoProfiler_inportb(s_cst(uint16_t, Port + 5)) & 1) == 0) ; return NoProfiler_inportb(Port); @@ -161,7 +161,7 @@ namespace UniversalAsynchronousReceiverTransmitter { if (e->GetRegisteredPort() == Port || e->GetRegisteredPort() == COMNULL) { -#if defined(a86) +#if defined(__amd64__) || defined(__i386__) e->OnReceived(NoProfiler_inportb(Port)); #endif } diff --git a/Kernel/exec/elf/elf_loader.cpp b/Kernel/exec/elf/elf_loader.cpp index efa59bdc..1d771e16 100644 --- a/Kernel/exec/elf/elf_loader.cpp +++ b/Kernel/exec/elf/elf_loader.cpp @@ -47,7 +47,7 @@ namespace Execute uint64_t EntryPoint, uint64_t BaseAddress) { -#if defined(a64) +#if defined(__amd64__) char *aux_platform = (char *)vma->RequestPages(1, true); /* TODO: 4KiB is too much for this */ strcpy(aux_platform, "x86_64"); @@ -101,7 +101,7 @@ namespace Execute void ELFObject::LoadExec_x86_64(FileNode *fd, PCB *TargetProcess) { -#if defined(a64) +#if defined(__amd64__) std::vector PhdrINTERP = ELFGetSymbolType_x86_64(fd, PT_INTERP); foreach (auto Interp in PhdrINTERP) { @@ -318,7 +318,7 @@ namespace Execute void ELFObject::LoadDyn_x86_64(FileNode *fd, PCB *TargetProcess) { -#if defined(a64) +#if defined(__amd64__) std::vector PhdrINTERP = ELFGetSymbolType_x86_64(fd, PT_INTERP); foreach (auto Interp in PhdrINTERP) { diff --git a/Kernel/exec/elf/elf_parse.cpp b/Kernel/exec/elf/elf_parse.cpp index 64e8a24d..be8ba57f 100644 --- a/Kernel/exec/elf/elf_parse.cpp +++ b/Kernel/exec/elf/elf_parse.cpp @@ -94,7 +94,7 @@ namespace Execute Elf64_Sym ELFLookupSymbol(FileNode *fd, std::string Name) { -#if defined(a64) +#if defined(__amd64__) Elf64_Ehdr Header{}; fd->Read(&Header, sizeof(Elf64_Ehdr), 0); @@ -145,7 +145,7 @@ namespace Execute uintptr_t ELFGetSymbolValue(Elf64_Ehdr *Header, uint64_t Table, uint64_t Index) { -#if defined(a64) +#if defined(__amd64__) if (Table == SHN_UNDEF || Index == SHN_UNDEF) return 0; Elf64_Shdr *SymbolTable = GetELFSection(Header, Table); @@ -186,7 +186,7 @@ namespace Execute Elf64_Shdr *Target = GetELFSection(Header, Symbol->st_shndx); return (uintptr_t)Header + Symbol->st_value + Target->sh_offset; } -#elif defined(a32) +#elif defined(__i386__) return 0xdead; #endif } diff --git a/Kernel/exec/elf/elf_rel.cpp b/Kernel/exec/elf/elf_rel.cpp index 96b2d37b..656e3753 100644 --- a/Kernel/exec/elf/elf_rel.cpp +++ b/Kernel/exec/elf/elf_rel.cpp @@ -29,7 +29,7 @@ namespace Execute const char *Name, Tasking::PCB *Process) { -#if defined(a64) +#if defined(__amd64__) UNUSED(Name); debug("Relocatable"); /* TODO: I have to fully implement this, but for now I will leave it as it is now. */ @@ -95,7 +95,7 @@ namespace Execute } } } -#elif defined(a32) +#elif defined(__i386__) #endif } } diff --git a/Kernel/exec/elf/parse/elf_get_dynamic_tag.cpp b/Kernel/exec/elf/parse/elf_get_dynamic_tag.cpp index f66a4248..d168d59e 100644 --- a/Kernel/exec/elf/parse/elf_get_dynamic_tag.cpp +++ b/Kernel/exec/elf/parse/elf_get_dynamic_tag.cpp @@ -24,7 +24,7 @@ namespace Execute std::vector ELFGetDynamicTag_x86_64(FileNode *fd, DynamicArrayTags Tag) { -#if defined(a64) || defined(aa64) +#if defined(__amd64__) || defined(__aarch64__) std::vector Ret; Elf64_Ehdr ELFHeader{}; @@ -55,7 +55,7 @@ namespace Execute } return Ret; -#elif defined(a32) +#elif defined(__i386__) return {}; #endif } diff --git a/Kernel/exec/elf/parse/elf_get_sections.cpp b/Kernel/exec/elf/parse/elf_get_sections.cpp index e0789885..5483a0aa 100644 --- a/Kernel/exec/elf/parse/elf_get_sections.cpp +++ b/Kernel/exec/elf/parse/elf_get_sections.cpp @@ -24,7 +24,7 @@ namespace Execute std::vector ELFGetSections_x86_64(FileNode *fd, const char *SectionName) { -#if defined(a64) || defined(aa64) +#if defined(__amd64__) || defined(__aarch64__) std::vector Ret; Elf64_Ehdr ELFHeader{}; @@ -46,7 +46,7 @@ namespace Execute delete[] SectionHeaders; delete[] SectionNames; return Ret; -#elif defined(a32) +#elif defined(__i386__) return {}; #endif } diff --git a/Kernel/exec/elf/parse/elf_get_symbol_type.cpp b/Kernel/exec/elf/parse/elf_get_symbol_type.cpp index 4adeac1a..07940dfa 100644 --- a/Kernel/exec/elf/parse/elf_get_symbol_type.cpp +++ b/Kernel/exec/elf/parse/elf_get_symbol_type.cpp @@ -24,7 +24,7 @@ namespace Execute std::vector ELFGetSymbolType_x86_64(FileNode *fd, SegmentTypes Tag) { -#if defined(a64) || defined(aa64) +#if defined(__amd64__) || defined(__aarch64__) std::vector Ret; Elf64_Ehdr ELFHeader{}; @@ -44,7 +44,7 @@ namespace Execute } return Ret; -#elif defined(a32) +#elif defined(__i386__) return {}; #endif } diff --git a/Kernel/include/abi.h b/Kernel/include/abi.h index a8741057..36fecc1c 100644 --- a/Kernel/include/abi.h +++ b/Kernel/include/abi.h @@ -77,11 +77,11 @@ typedef struct } a_un; } Elf64_auxv_t; -#if defined(a64) +#if defined(__amd64__) typedef Elf64_auxv_t Elf_auxv_t; -#elif defined(a32) +#elif defined(__i386__) typedef Elf64_auxv_t Elf_auxv_t; -#elif defined(aa64) +#elif defined(__aarch64__) typedef Elf64_auxv_t Elf_auxv_t; #endif diff --git a/Kernel/include/cpu.hpp b/Kernel/include/cpu.hpp index 49090b75..15167679 100644 --- a/Kernel/include/cpu.hpp +++ b/Kernel/include/cpu.hpp @@ -143,9 +143,9 @@ namespace CPU { do { -#if defined(a86) +#if defined(__amd64__) || defined(__i386__) asmv("pause"); -#elif defined(aa64) +#elif defined(__aarch64__) asmv("yield"); #endif } while (Loop); @@ -156,12 +156,12 @@ namespace CPU */ nsa __noreturn __used inline void Stop() { -#if defined(a86) +#if defined(__amd64__) || defined(__i386__) asmv("CPUStopLoop:\n" "cli\n" "hlt\n" "jmp CPUStopLoop"); -#elif defined(aa64) +#elif defined(__aarch64__) asmv("CPUStopLoop:\n" "cpsid i\n" "wfe\n" @@ -178,9 +178,9 @@ namespace CPU { do { -#if defined(a86) +#if defined(__amd64__) || defined(__i386__) asmv("hlt"); -#elif defined(aa64) +#elif defined(__aarch64__) asmv("wfe"); #endif } while (Loop); @@ -431,7 +431,7 @@ namespace CPU */ static inline void cpuid(uint32_t Function, uint32_t *eax, uint32_t *ebx, uint32_t *ecx, uint32_t *edx) { -#ifdef a32 +#ifdef __i386__ asmv("cpuid" : "=a"(*eax), "=b"(*ebx), "=c"(*ecx), "=d"(*edx) : "a"(Function)); @@ -446,7 +446,7 @@ namespace CPU nsa static inline void lgdt(void *gdt) { -#ifdef a32 +#ifdef __i386__ asmv("lgdt (%0)" : : "r"(gdt)); @@ -457,7 +457,7 @@ namespace CPU nsa static inline void lidt(void *idt) { -#ifdef a32 +#ifdef __i386__ asmv("lidt (%0)" : : "r"(idt)); @@ -468,7 +468,7 @@ namespace CPU nsa static inline void ltr(uint16_t Segment) { -#ifdef a32 +#ifdef __i386__ asmv("ltr %0" : : "r"(Segment)); @@ -479,7 +479,7 @@ namespace CPU nsa static inline void invlpg(void *Address) { -#ifdef a32 +#ifdef __i386__ asmv("invlpg (%0)" : : "r"(Address) @@ -491,7 +491,7 @@ namespace CPU nsa static inline void fxsave(void *FXSaveArea) { -#ifdef a32 +#ifdef __i386__ if (!FXSaveArea) return; @@ -506,7 +506,7 @@ namespace CPU nsa static inline void fxrstor(void *FXRstorArea) { -#ifdef a32 +#ifdef __i386__ if (!FXRstorArea) return; @@ -912,7 +912,7 @@ namespace CPU nsa static inline void lgdt(void *gdt) { -#ifdef a64 +#ifdef __amd64__ asmv("lgdt (%0)" : : "r"(gdt)); @@ -921,7 +921,7 @@ namespace CPU nsa static inline void lidt(void *idt) { -#ifdef a64 +#ifdef __amd64__ asmv("lidt (%0)" : : "r"(idt)); @@ -930,7 +930,7 @@ namespace CPU nsa static inline void ltr(uint16_t Segment) { -#ifdef a64 +#ifdef __amd64__ asmv("ltr %0" : : "r"(Segment)); @@ -939,7 +939,7 @@ namespace CPU nsa static inline void invlpg(void *Address) { -#ifdef a64 +#ifdef __amd64__ asmv("invlpg (%0)" : : "r"(Address) @@ -958,7 +958,7 @@ namespace CPU */ nsa static inline void cpuid(uint32_t Function, uint32_t *eax, uint32_t *ebx, uint32_t *ecx, uint32_t *edx) { -#ifdef a64 +#ifdef __amd64__ asmv("cpuid" : "=a"(*eax), "=b"(*ebx), "=c"(*ecx), "=d"(*edx) : "a"(Function)); @@ -981,7 +981,7 @@ namespace CPU nsa static inline void fxsave(void *FXSaveArea) { -#ifdef a64 +#ifdef __amd64__ if (!FXSaveArea || FXSaveArea >= (char *)0xfffffffffffff000) return; @@ -994,7 +994,7 @@ namespace CPU nsa static inline void fxrstor(void *FXRstorArea) { -#ifdef a64 +#ifdef __amd64__ if (!FXRstorArea || FXRstorArea >= (char *)0xfffffffffffff000) return; @@ -1051,7 +1051,7 @@ namespace CPU }; } -#if defined(a64) +#if defined(__amd64__) /** * CPU trap frame for the current architecture * @@ -1060,7 +1060,7 @@ namespace CPU typedef x64::TrapFrame TrapFrame; typedef x64::SchedulerFrame SchedulerFrame; typedef x64::ExceptionFrame ExceptionFrame; -#elif defined(a32) +#elif defined(__i386__) /** * CPU trap frame for the current architecture * @@ -1069,7 +1069,7 @@ namespace CPU typedef x32::TrapFrame TrapFrame; typedef x32::SchedulerFrame SchedulerFrame; typedef x32::ExceptionFrame ExceptionFrame; -#elif defined(aa64) +#elif defined(__aarch64__) /** * CPU trap frame for the current architecture * diff --git a/Kernel/include/cpu/membar.hpp b/Kernel/include/cpu/membar.hpp index f8c1ec3d..9c34d8c4 100644 --- a/Kernel/include/cpu/membar.hpp +++ b/Kernel/include/cpu/membar.hpp @@ -26,10 +26,10 @@ namespace CPU { nsa static inline void Barrier() { -#if defined(a86) +#if defined(__amd64__) || defined(__i386__) asmv("" :: : "memory"); -#elif defined(aa64) +#elif defined(__aarch64__) asmv("dmb ish" :: : "memory"); #endif @@ -37,10 +37,10 @@ namespace CPU nsa static inline void Fence() { -#if defined(a86) +#if defined(__amd64__) || defined(__i386__) asmv("mfence" :: : "memory"); -#elif defined(aa64) +#elif defined(__aarch64__) asmv("dmb ish" :: : "memory"); #endif @@ -48,10 +48,10 @@ namespace CPU nsa static inline void StoreFence() { -#if defined(a86) +#if defined(__amd64__) || defined(__i386__) asmv("sfence" :: : "memory"); -#elif defined(aa64) +#elif defined(__aarch64__) asmv("dmb ishst" :: : "memory"); #endif @@ -59,10 +59,10 @@ namespace CPU nsa static inline void LoadFence() { -#if defined(a86) +#if defined(__amd64__) || defined(__i386__) asmv("lfence" :: : "memory"); -#elif defined(aa64) +#elif defined(__aarch64__) asmv("dmb ishld" :: : "memory"); #endif diff --git a/Kernel/include/cpu/x86/cpuid_amd.hpp b/Kernel/include/cpu/x86/cpuid_amd.hpp index 65eaa5af..448fb003 100644 --- a/Kernel/include/cpu/x86/cpuid_amd.hpp +++ b/Kernel/include/cpu/x86/cpuid_amd.hpp @@ -21,15 +21,15 @@ #include #include -#if defined(a64) +#if defined(__amd64__) typedef uint64_t cpuid_t; -#elif defined(a32) +#elif defined(__i386__) typedef uint32_t cpuid_t; #else typedef uint64_t cpuid_t; -#endif // a64 || a32 +#endif // __amd64__ || __i386__ -#if defined(a86) +#if defined(__amd64__) || defined(__i386__) #define __amd_cpuid_init(leaf) \ CPUID##leaf() \ { \ diff --git a/Kernel/include/cpu/x86/cpuid_intel.hpp b/Kernel/include/cpu/x86/cpuid_intel.hpp index 26f3ffae..26b07c37 100644 --- a/Kernel/include/cpu/x86/cpuid_intel.hpp +++ b/Kernel/include/cpu/x86/cpuid_intel.hpp @@ -21,15 +21,15 @@ #include #include -#if defined(a64) +#if defined(__amd64__) typedef uint64_t cpuid_t; -#elif defined(a32) +#elif defined(__i386__) typedef uint32_t cpuid_t; #else typedef uint64_t cpuid_t; -#endif // a64 || a32 +#endif // __amd64__ || __i386__ -#if defined(a86) +#if defined(__amd64__) || defined(__i386__) #define __intel_cpuid_init(leaf) \ CPUID##leaf() \ { \ diff --git a/Kernel/include/cpu/x86/x32/cr.hpp b/Kernel/include/cpu/x86/x32/cr.hpp index 707882fc..d650c5e9 100644 --- a/Kernel/include/cpu/x86/x32/cr.hpp +++ b/Kernel/include/cpu/x86/x32/cr.hpp @@ -141,7 +141,7 @@ namespace CPU }; uint32_t raw; } CR4; -#if defined(a32) +#if defined(__i386__) nsa static inline CR0 readcr0() { uint32_t Result = 0; diff --git a/Kernel/include/cpu/x86/x32/msr.hpp b/Kernel/include/cpu/x86/x32/msr.hpp index 12662799..42244b88 100644 --- a/Kernel/include/cpu/x86/x32/msr.hpp +++ b/Kernel/include/cpu/x86/x32/msr.hpp @@ -400,7 +400,7 @@ namespace CPU MSR_CR_PAT = 0x00000277, }; -#if defined(a32) +#if defined(__i386__) nsa static inline uint64_t rdmsr(uint32_t msr) { uint32_t Low, High; diff --git a/Kernel/include/cpu/x86/x64/cr.hpp b/Kernel/include/cpu/x86/x64/cr.hpp index 1ed53aa8..6a0f889d 100644 --- a/Kernel/include/cpu/x86/x64/cr.hpp +++ b/Kernel/include/cpu/x86/x64/cr.hpp @@ -191,7 +191,7 @@ namespace CPU uint64_t raw; } XCR0; -#if defined(a64) +#if defined(__amd64__) nsa static inline CR0 readcr0() { uint64_t Result = 0; diff --git a/Kernel/include/cpu/x86/x64/msr.hpp b/Kernel/include/cpu/x86/x64/msr.hpp index 2fb70332..8b54418f 100644 --- a/Kernel/include/cpu/x86/x64/msr.hpp +++ b/Kernel/include/cpu/x86/x64/msr.hpp @@ -401,7 +401,7 @@ namespace CPU MSR_CR_PAT_RESET = 0x0007040600070406ULL }; -#if defined(a64) +#if defined(__amd64__) nsa static inline uint64_t rdmsr(uint32_t msr) { uint32_t Low, High; diff --git a/Kernel/include/elf.h b/Kernel/include/elf.h index 23dfcd87..65a03851 100644 --- a/Kernel/include/elf.h +++ b/Kernel/include/elf.h @@ -946,7 +946,7 @@ typedef struct char pr_psargs[ELF_PRARGSZ]; } Elf64_Prpsinfo; -#if defined(a64) || defined(aa64) +#if defined(__amd64__) || defined(__aarch64__) typedef Elf64_Addr Elf_Addr; typedef Elf64_Half Elf_Half; typedef Elf64_Off Elf_Off; @@ -960,7 +960,7 @@ typedef Elf64_Rel Elf_Rel; typedef Elf64_Sym Elf_Sym; typedef Elf64_Dyn Elf_Dyn; typedef Elf64_Rela Elf_Rela; -#elif defined(a32) +#elif defined(__i386__) typedef Elf32_Addr Elf_Addr; typedef Elf32_Half Elf_Half; typedef Elf32_Off Elf_Off; diff --git a/Kernel/include/intrin.hpp b/Kernel/include/intrin.hpp index 4de9c434..287ffb3a 100644 --- a/Kernel/include/intrin.hpp +++ b/Kernel/include/intrin.hpp @@ -25,21 +25,21 @@ namespace FXSR { void _fxsave(void *mem_addr) { -#ifdef a64 +#ifdef __amd64__ __builtin_ia32_fxsave(mem_addr); #endif } void _fxrstor(void *mem_addr) { -#ifdef a64 +#ifdef __amd64__ __builtin_ia32_fxrstor(mem_addr); #endif } void _fxsave64(void *mem_addr) { -#ifdef a64 +#ifdef __amd64__ asmv("fxsaveq (%0)" : : "r"(mem_addr) @@ -49,7 +49,7 @@ namespace FXSR void _fxrstor64(void *mem_addr) { -#ifdef a64 +#ifdef __amd64__ asmv("fxrstorq (%0)" : : "r"(mem_addr) @@ -62,18 +62,18 @@ namespace SMAP { void _clac(void) { -#if defined(a86) +#if defined(__amd64__) || defined(__i386__) asmv("clac" :: : "cc"); -#endif // a64 || a32 +#endif // __amd64__ || __i386__ } void _stac(void) { -#if defined(a86) +#if defined(__amd64__) || defined(__i386__) asmv("stac" :: : "cc"); -#endif // a64 || a32 +#endif // __amd64__ || __i386__ } } diff --git a/Kernel/include/ints.hpp b/Kernel/include/ints.hpp index 84fbc452..fdd761ce 100644 --- a/Kernel/include/ints.hpp +++ b/Kernel/include/ints.hpp @@ -30,13 +30,13 @@ namespace Interrupts #define INT_FRAMES_MAX 8 #endif -#if defined(a64) +#if defined(__amd64__) /* APIC::APIC */ extern void *apic[255]; // MAX_CPU /* APIC::Timer */ extern void *apicTimer[255]; // MAX_CPU -#elif defined(a32) +#elif defined(__i386__) /* APIC::APIC */ extern void *apic[255]; // MAX_CPU /* APIC::Timer */ extern void *apicTimer[255]; // MAX_CPU -#elif defined(aa64) +#elif defined(__aarch64__) #endif void Initialize(int Core); diff --git a/Kernel/include/io.h b/Kernel/include/io.h index a3e90791..a6cd7aa4 100644 --- a/Kernel/include/io.h +++ b/Kernel/include/io.h @@ -20,7 +20,7 @@ #include -#if defined(a86) +#if defined(__amd64__) || defined(__i386__) #ifdef __cplusplus extern "C" @@ -98,7 +98,7 @@ extern "C" : "memory"); } -#if defined(a64) +#if defined(__amd64__) static inline void mmoutq(void *Address, uint64_t Value) { asmv("mov %1, %0" @@ -138,7 +138,7 @@ extern "C" return Result; } -#if defined(a64) +#if defined(__amd64__) static inline uint64_t mminq(void *Address) { uint64_t Result; @@ -154,5 +154,5 @@ extern "C" } #endif -#endif // defined(a86) +#endif // defined(__amd64__) || defined(__i386__) #endif // !__FENNIX_KERNEL_IO_H__ diff --git a/Kernel/include/memory/macro.hpp b/Kernel/include/memory/macro.hpp index c600c75c..e75beb83 100644 --- a/Kernel/include/memory/macro.hpp +++ b/Kernel/include/memory/macro.hpp @@ -48,7 +48,7 @@ /* From pages */ #define FROM_PAGES(d) ((d) * PAGE_SIZE) -#if defined(a64) || defined(aa64) +#if defined(__amd64__) || defined(__aarch64__) #define KERNEL_VMA_OFFSET 0xFFFFFFFF80000000 #define USER_ALLOC_BASE 0xFFFFA00000000000 /* 256 GiB */ @@ -59,7 +59,7 @@ #define USER_STACK_END 0xFFFFEFFF00000000 /* 256 MiB */ #define USER_STACK_BASE 0xFFFFEFFFFFFF0000 -#elif defined(a32) +#elif defined(__i386__) #define KERNEL_VMA_OFFSET 0xC0000000 #define USER_ALLOC_BASE 0x80000000 diff --git a/Kernel/include/memory/table.hpp b/Kernel/include/memory/table.hpp index 925838e9..21655bea 100644 --- a/Kernel/include/memory/table.hpp +++ b/Kernel/include/memory/table.hpp @@ -108,7 +108,7 @@ namespace Memory { struct { -#if defined(a64) +#if defined(__amd64__) uintptr_t Present : 1; // 0 uintptr_t ReadWrite : 1; // 1 uintptr_t UserSupervisor : 1; // 2 @@ -131,7 +131,7 @@ namespace Memory uintptr_t Available9 : 1; // 58 uintptr_t ProtectionKey : 4; // 59-62 uintptr_t ExecuteDisable : 1; // 63 -#elif defined(a32) +#elif defined(__i386__) uintptr_t Present : 1; // 0 uintptr_t ReadWrite : 1; // 1 uintptr_t UserSupervisor : 1; // 2 @@ -145,7 +145,7 @@ namespace Memory uintptr_t KernelReserve : 1; // 10 uintptr_t Available2 : 1; // 11 uintptr_t Address : 20; // 12-31 -#elif defined(aa64) +#elif defined(__aarch64__) #endif }; uintptr_t raw = 0; @@ -153,15 +153,15 @@ namespace Memory /** @brief Set Address */ void SetAddress(uintptr_t _Address) { -#if defined(a64) +#if defined(__amd64__) _Address &= 0x000000FFFFFFFFFF; this->raw &= 0xFFF0000000000FFF; this->raw |= (_Address << 12); -#elif defined(a32) +#elif defined(__i386__) _Address &= 0x000FFFFF; this->raw &= 0xFFC00003; this->raw |= (_Address << 12); -#elif defined(aa64) +#elif defined(__aarch64__) _Address &= 0x000000FFFFFFFFFF; this->raw &= 0xFFF0000000000FFF; this->raw |= (_Address << 12); @@ -171,11 +171,11 @@ namespace Memory /** @brief Get Address */ uintptr_t GetAddress() { -#if defined(a64) +#if defined(__amd64__) return (this->raw & 0x000FFFFFFFFFF000) >> 12; -#elif defined(a32) +#elif defined(__i386__) return ((uintptr_t)(this->raw & 0x003FFFFF000) >> 12); -#elif defined(aa64) +#elif defined(__aarch64__) return (this->raw & 0x000FFFFFFFFFF000) >> 12; #endif } @@ -183,17 +183,17 @@ namespace Memory struct __packed PageTableEntryPtr { -#if defined(a64) +#if defined(__amd64__) PageTableEntry Entries[512]; -#elif defined(a32) +#elif defined(__i386__) PageTableEntry Entries[1024]; -#elif defined(aa64) +#elif defined(__aarch64__) #endif }; union __packed PageDirectoryEntry { -#if defined(a64) +#if defined(__amd64__) struct { uintptr_t Present : 1; // 0 @@ -250,7 +250,7 @@ namespace Memory uintptr_t ProtectionKey : 4; // 59-62 uintptr_t ExecuteDisable : 1; // 63 } TwoMiB; -#elif defined(a32) +#elif defined(__i386__) struct { uintptr_t Present : 1; // 0 @@ -287,22 +287,22 @@ namespace Memory uintptr_t Reserved0 : 1; // 21 uintptr_t Address1 : 10; // 22-31 } FourMiB; -#elif defined(aa64) +#elif defined(__aarch64__) #endif uintptr_t raw = 0; /** @brief Set PageTableEntryPtr address */ void SetAddress(uintptr_t _Address) { -#if defined(a64) +#if defined(__amd64__) _Address &= 0x000000FFFFFFFFFF; this->raw &= 0xFFF0000000000FFF; this->raw |= (_Address << 12); -#elif defined(a32) +#elif defined(__i386__) _Address &= 0x000FFFFF; this->raw &= 0xFFC00003; this->raw |= (_Address << 12); -#elif defined(aa64) +#elif defined(__aarch64__) _Address &= 0x000000FFFFFFFFFF; this->raw &= 0xFFF0000000000FFF; this->raw |= (_Address << 12); @@ -312,11 +312,11 @@ namespace Memory /** @brief Get PageTableEntryPtr address */ uintptr_t GetAddress() { -#if defined(a64) +#if defined(__amd64__) return (this->raw & 0x000FFFFFFFFFF000) >> 12; -#elif defined(a32) +#elif defined(__i386__) return ((uintptr_t)(this->raw & 0x003FFFFF000) >> 12); -#elif defined(aa64) +#elif defined(__aarch64__) return (this->raw & 0x000FFFFFFFFFF000) >> 12; #endif } @@ -329,7 +329,7 @@ namespace Memory union __packed PageDirectoryPointerTableEntry { -#if defined(a64) +#if defined(__amd64__) struct { uintptr_t Present : 1; // 0 @@ -386,18 +386,18 @@ namespace Memory uintptr_t ProtectionKey : 4; // 59-62 uintptr_t ExecuteDisable : 1; // 63 } OneGiB; -#elif defined(aa64) +#elif defined(__aarch64__) #endif uintptr_t raw = 0; /** @brief Set PageDirectoryEntryPtr address */ void SetAddress(uintptr_t _Address) { -#if defined(a64) +#if defined(__amd64__) _Address &= 0x000000FFFFFFFFFF; this->raw &= 0xFFF0000000000FFF; this->raw |= (_Address << 12); -#elif defined(aa64) +#elif defined(__aarch64__) _Address &= 0x000000FFFFFFFFFF; this->raw &= 0xFFF0000000000FFF; this->raw |= (_Address << 12); @@ -407,11 +407,11 @@ namespace Memory /** @brief Get PageDirectoryEntryPtr address */ uintptr_t GetAddress() { -#if defined(a64) +#if defined(__amd64__) return (this->raw & 0x000FFFFFFFFFF000) >> 12; -#elif defined(a32) +#elif defined(__i386__) return 0; -#elif defined(aa64) +#elif defined(__aarch64__) return (this->raw & 0x000FFFFFFFFFF000) >> 12; #endif } @@ -424,7 +424,7 @@ namespace Memory union __packed PageMapLevel4 { -#if defined(a64) +#if defined(__amd64__) struct { uintptr_t Present : 1; // 0 @@ -453,18 +453,18 @@ namespace Memory uintptr_t Available15 : 1; // 62 uintptr_t ExecuteDisable : 1; // 63 }; -#elif defined(aa64) +#elif defined(__aarch64__) #endif uintptr_t raw = 0; /** @brief Set PageDirectoryPointerTableEntryPtr address */ void SetAddress(uintptr_t _Address) { -#if defined(a64) +#if defined(__amd64__) _Address &= 0x000000FFFFFFFFFF; this->raw &= 0xFFF0000000000FFF; this->raw |= (_Address << 12); -#elif defined(aa64) +#elif defined(__aarch64__) _Address &= 0x000000FFFFFFFFFF; this->raw &= 0xFFF0000000000FFF; this->raw |= (_Address << 12); @@ -474,11 +474,11 @@ namespace Memory /** @brief Get PageDirectoryPointerTableEntryPtr address */ uintptr_t GetAddress() { -#if defined(a64) +#if defined(__amd64__) return (this->raw & 0x000FFFFFFFFFF000) >> 12; -#elif defined(a32) +#elif defined(__i386__) return 0; -#elif defined(aa64) +#elif defined(__aarch64__) return (this->raw & 0x000FFFFFFFFFF000) >> 12; #endif } @@ -491,7 +491,7 @@ namespace Memory union __packed PageMapLevel5 { -#if defined(a64) +#if defined(__amd64__) struct { uintptr_t Present : 1; // 0 @@ -520,18 +520,18 @@ namespace Memory uintptr_t Available14 : 1; // 62 uintptr_t ExecuteDisable : 1; // 63 }; -#elif defined(aa64) +#elif defined(__aarch64__) #endif uintptr_t raw = 0; /** @brief Set PageMapLevel4Ptr address */ void SetAddress(uintptr_t _Address) { -#if defined(a64) +#if defined(__amd64__) _Address &= 0x000000FFFFFFFFFF; this->raw &= 0xFFF0000000000FFF; this->raw |= (_Address << 12); -#elif defined(aa64) +#elif defined(__aarch64__) _Address &= 0x000000FFFFFFFFFF; this->raw &= 0xFFF0000000000FFF; this->raw |= (_Address << 12); @@ -541,11 +541,11 @@ namespace Memory /** @brief Get PageMapLevel4Ptr address */ uintptr_t GetAddress() { -#if defined(a64) +#if defined(__amd64__) return (this->raw & 0x000FFFFFFFFFF000) >> 12; -#elif defined(a32) +#elif defined(__i386__) return 0; -#elif defined(aa64) +#elif defined(__aarch64__) return (this->raw & 0x000FFFFFFFFFF000) >> 12; #endif } @@ -554,11 +554,11 @@ namespace Memory class PageTable { public: -#if defined(a64) +#if defined(__amd64__) PageMapLevel4 Entries[512]; -#elif defined(a32) +#elif defined(__i386__) PageDirectoryEntry Entries[1024]; -#elif defined(aa64) +#elif defined(__aarch64__) #endif /** diff --git a/Kernel/include/memory/virtual.hpp b/Kernel/include/memory/virtual.hpp index 5c071e9f..aa336421 100644 --- a/Kernel/include/memory/virtual.hpp +++ b/Kernel/include/memory/virtual.hpp @@ -45,7 +45,7 @@ namespace Memory class PageMapIndexer { public: -#if defined(a64) +#if defined(__amd64__) uintptr_t PMLIndex = 0; uintptr_t PDPTEIndex = 0; #endif @@ -100,11 +100,11 @@ namespace Memory */ MapType GetMapType(void *VirtualAddress); -#ifdef a64 +#ifdef __amd64__ PageMapLevel5 *GetPML5(void *VirtualAddress, MapType Type = MapType::FourKiB); PageMapLevel4 *GetPML4(void *VirtualAddress, MapType Type = MapType::FourKiB); PageDirectoryPointerTableEntry *GetPDPTE(void *VirtualAddress, MapType Type = MapType::FourKiB); -#endif /* a64 */ +#endif /* __amd64__ */ PageDirectoryEntry *GetPDE(void *VirtualAddress, MapType Type = MapType::FourKiB); PageTableEntry *GetPTE(void *VirtualAddress, MapType Type = MapType::FourKiB); diff --git a/Kernel/include/signal.hpp b/Kernel/include/signal.hpp index 9d66277f..1b9d8554 100644 --- a/Kernel/include/signal.hpp +++ b/Kernel/include/signal.hpp @@ -310,7 +310,7 @@ namespace Tasking struct StackInfo { -#ifdef a64 +#ifdef __amd64__ CPU::x64::FXState fx; CPU::x64::SchedulerFrame tf; uintptr_t GSBase, FSBase, ShadowGSBase; diff --git a/Kernel/include/smp.hpp b/Kernel/include/smp.hpp index 96b50c65..397aa568 100644 --- a/Kernel/include/smp.hpp +++ b/Kernel/include/smp.hpp @@ -29,11 +29,11 @@ struct CPUArchData { -#if defined(a64) +#if defined(__amd64__) __aligned(16) CPU::x64::FXState FPU{}; -#elif defined(a32) +#elif defined(__i386__) __aligned(16) CPU::x32::FXState FPU{}; -#elif defined(aa64) +#elif defined(__aarch64__) #endif }; diff --git a/Kernel/include/syscalls.hpp b/Kernel/include/syscalls.hpp index ae9642ad..04c861c3 100644 --- a/Kernel/include/syscalls.hpp +++ b/Kernel/include/syscalls.hpp @@ -22,7 +22,7 @@ typedef struct SyscallsFrame { -#if defined(a64) +#if defined(__amd64__) uint64_t r15; uint64_t r14; uint64_t r13; @@ -44,7 +44,7 @@ typedef struct SyscallsFrame uint64_t Flags; uint64_t StackPointer; uint64_t StackSegment; -#elif defined(a32) +#elif defined(__i386__) uint32_t ebp; uint32_t edi; uint32_t esi; @@ -58,7 +58,7 @@ typedef struct SyscallsFrame uint32_t Flags; uint32_t StackPointer; uint32_t StackSegment; -#elif defined(aa64) +#elif defined(__aarch64__) uint32_t ReturnAddress; uint32_t StackPointer; #endif diff --git a/Kernel/include/task.hpp b/Kernel/include/task.hpp index ec0d382c..eb3cc68d 100644 --- a/Kernel/include/task.hpp +++ b/Kernel/include/task.hpp @@ -355,13 +355,13 @@ namespace Tasking ThreadSignal Signals; /* CPU state */ -#if defined(a64) +#if defined(__amd64__) CPU::x64::SchedulerFrame Registers{}; uintptr_t ShadowGSBase, GSBase, FSBase; -#elif defined(a32) +#elif defined(__i386__) CPU::x32::SchedulerFrame Registers{}; uintptr_t ShadowGSBase, GSBase, FSBase; -#elif defined(aa64) +#elif defined(__aarch64__) uintptr_t Registers; // TODO #endif __aligned(16) CPU::x64::FXState FPU; @@ -549,11 +549,11 @@ namespace Tasking constexpr TaskArchitecture GetKArch() { -#if defined(a64) +#if defined(__amd64__) return x64; -#elif defined(a32) +#elif defined(__i386__) return x32; -#elif defined(aa64) +#elif defined(__aarch64__) return ARM64; #endif } diff --git a/Kernel/include/types.h b/Kernel/include/types.h index 4dcd89c2..2438007c 100644 --- a/Kernel/include/types.h +++ b/Kernel/include/types.h @@ -147,7 +147,7 @@ typedef __SIG_ATOMIC_TYPE__ sig_atomic_t; // TODO: ssize_t typedef intptr_t ssize_t; -#if defined(a64) || defined(aa64) +#if defined(__amd64__) || defined(__aarch64__) typedef int64_t off_t; typedef int64_t off64_t; typedef uint32_t mode_t; @@ -163,7 +163,7 @@ typedef uint32_t uid_t; typedef uint32_t gid_t; typedef int64_t clock_t; typedef int32_t pid_t; -#elif defined(a32) +#elif defined(__i386__) typedef int32_t off_t; typedef long long off64_t; typedef __INT32_TYPE__ mode_t; @@ -303,17 +303,17 @@ public: #define WINT_MAX __WINT_MAX__ #define WINT_MIN __WINT_MIN__ -#if defined(a64) +#if defined(__amd64__) #define BREAK __asm__ __volatile__("int $0x3" \ : \ : \ : "memory"); -#elif defined(a32) +#elif defined(__i386__) #define BREAK __asm__ __volatile__("int $0x3" \ : \ : \ : "memory"); -#elif defined(aa64) +#elif defined(__aarch64__) #define BREAK __asm__ __volatile__("brk #0" \ : \ : \ diff --git a/Kernel/include_std/float.h b/Kernel/include_std/float.h index 666c05fe..ee63d1ad 100644 --- a/Kernel/include_std/float.h +++ b/Kernel/include_std/float.h @@ -19,11 +19,11 @@ /* Stubs */ #define FLT_RADIX 2 -#if a64 +#if __amd64__ #define DBL_MANT_DIG 53 #define DBL_MAX_10_EXP 308 #define DBL_MAX 1.7976931348623157e+308 -#elif a32 +#elif __i386__ #define DBL_MANT_DIG 24 #define DBL_MAX_10_EXP 38 #define DBL_MAX 3.4028234663852886e+38 diff --git a/Kernel/include_std/functional b/Kernel/include_std/functional index 3e89d662..18304f92 100644 --- a/Kernel/include_std/functional +++ b/Kernel/include_std/functional @@ -37,11 +37,11 @@ namespace std { size_t operator()(const Key &key) const { -#if defined(a64) +#if defined(__amd64__) static_assert(sizeof(uintptr_t) == sizeof(uint64_t)); const uint64_t FNV_OFFSET_BASIS = 14695981039346656037ull; const uint64_t FNV_PRIME = 1099511628211ull; -#elif defined(a32) +#elif defined(__i386__) static_assert(sizeof(uintptr_t) == sizeof(uint32_t)); const uint32_t FNV_OFFSET_BASIS = 2166136261u; const uint32_t FNV_PRIME = 16777619u; diff --git a/Kernel/kernel.cpp b/Kernel/kernel.cpp index d9296f54..e659a33a 100644 --- a/Kernel/kernel.cpp +++ b/Kernel/kernel.cpp @@ -79,13 +79,13 @@ EXTERNC void _KPrint(const char *Format, va_list Args) uint64_t Nanoseconds = TimeManager->GetNanosecondsSinceClassCreation(); if (Nanoseconds != 0) { -#if defined(a64) +#if defined(__amd64__) printf("\x1b[1;30m[\x1b[1;34m%lu.%07lu\x1b[1;30m]\x1b[0m ", Nanoseconds / 10000000, Nanoseconds % 10000000); -#elif defined(a32) +#elif defined(__i386__) printf("\x1b[1;30m[\x1b[1;34m%llu.%07llu\x1b[1;30m]\x1b[0m ", Nanoseconds / 10000000, Nanoseconds % 10000000); -#elif defined(aa64) +#elif defined(__aarch64__) printf("\x1b[1;30m[\x1b[1;34m%lu.%07lu\x1b[1;30m]\x1b[0m ", Nanoseconds / 10000000, Nanoseconds % 10000000); #endif @@ -143,7 +143,7 @@ EXTERNC NIF void Main() if (DebuggerIsAttached) KPrint("Kernel debugger detected."); -#if defined(a86) && defined(DEBUG) +#if defined(__amd64__) || defined(__i386__) && defined(DEBUG) uint8_t lpt1 = inb(0x378); uint8_t lpt2 = inb(0x278); uint8_t lpt3 = inb(0x3BC); @@ -218,9 +218,9 @@ EXTERNC NIF void Main() KPrint("Enabling Interrupts on Bootstrap Processor"); Interrupts::Enable(0); -#if defined(a86) +#if defined(__amd64__) || defined(__i386__) PowerManager->InitDSDT(); -#elif defined(aa64) +#elif defined(__aarch64__) #endif KPrint("Initializing Timers"); @@ -268,7 +268,7 @@ EXTERNC __no_stack_protector NIF void Entry(BootInfo *Info) for (CallPtr *fct = __init_array_start; fct != __init_array_end; fct++) (*fct)(); -#ifdef a86 +#if defined(__amd64__) || defined(__i386__) if (!bInfo.SMBIOSPtr) { trace("SMBIOS was not provided by the bootloader. Trying to find it manually."); @@ -327,19 +327,19 @@ EXTERNC __no_stack_protector NIF void Entry(BootInfo *Info) // void *KernelStackAddress = StackManager.Allocate(STACK_SIZE); /* FIXME: This breaks stl tests, how? */ uintptr_t KernelStack = (uintptr_t)KernelStackAddress + STACK_SIZE - 0x10; debug("Kernel stack: %#lx-%#lx", KernelStackAddress, KernelStack); -#if defined(a64) +#if defined(__amd64__) asmv("mov %0, %%rsp" : : "r"(KernelStack) : "memory"); asmv("mov $0, %rbp"); -#elif defined(a32) +#elif defined(__i386__) asmv("mov %0, %%esp" : : "r"(KernelStack) : "memory"); asmv("mov $0, %ebp"); -#elif defined(aa64) +#elif defined(__aarch64__) #warning "Kernel stack is not set!" #endif diff --git a/Kernel/kshell/commands/top.cpp b/Kernel/kshell/commands/top.cpp index fbafc9ad..221a4f5b 100644 --- a/Kernel/kshell/commands/top.cpp +++ b/Kernel/kshell/commands/top.cpp @@ -45,12 +45,12 @@ void cmd_top(const char *) printf("PID Name State Priority Memory Usage CPU Usage\n"); foreach (auto Proc in TaskManager->GetProcessList()) { -#if defined(a64) +#if defined(__amd64__) printf("%-4d %-20s %s %d %ld KiB %ld\n", Proc->ID, Proc->Name, TaskStateStrings[Proc->State.load()], Proc->Info.Priority, TO_KiB(Proc->GetSize()), Proc->Info.UserTime + Proc->Info.KernelTime); -#elif defined(a32) +#elif defined(__i386__) printf("%-4d %-20s %s %d %lld KiB %lld\n", Proc->ID, Proc->Name, TaskStateStrings[Proc->State.load()], Proc->Info.Priority, TO_KiB(Proc->GetSize()), @@ -59,12 +59,12 @@ void cmd_top(const char *) foreach (auto Thrd in Proc->Threads) { -#if defined(a64) +#if defined(__amd64__) printf(" %-4d %-20s %s %d %ld KiB %ld\n", Thrd->ID, Thrd->Name, TaskStateStrings[Thrd->State.load()], Thrd->Info.Priority, TO_KiB(Thrd->GetSize()), Thrd->Info.UserTime + Thrd->Info.KernelTime); -#elif defined(a32) +#elif defined(__i386__) printf(" %-4d %-20s %s %d %lld KiB %lld\n", Thrd->ID, Thrd->Name, TaskStateStrings[Thrd->State.load()], Thrd->Info.Priority, TO_KiB(Thrd->GetSize()), diff --git a/Kernel/kshell/commands/uptime.cpp b/Kernel/kshell/commands/uptime.cpp index ff85b37d..71b94624 100644 --- a/Kernel/kshell/commands/uptime.cpp +++ b/Kernel/kshell/commands/uptime.cpp @@ -40,11 +40,11 @@ void cmd_uptime(const char *) Minutes %= 60; Hours %= 24; -#if defined(a64) +#if defined(__amd64__) printf("%ld days, %ld hours, %ld minutes, %ld %s\n", Days, Hours, Minutes, Seconds, Seconds == 1 ? "second" : "seconds"); -#elif defined(a32) +#elif defined(__i386__) printf("%lld days, %lld hours, %lld minutes, %lld %s\n", Days, Hours, Minutes, Seconds, Seconds == 1 ? "second" : "seconds"); diff --git a/Kernel/library/convert.cpp b/Kernel/library/convert.cpp index 848aba7b..0810e8b6 100644 --- a/Kernel/library/convert.cpp +++ b/Kernel/library/convert.cpp @@ -803,7 +803,7 @@ EXTERNC void __chk_fail(void) __noreturn; __noreturn __always_inline static inline void __convert_chk_fail(void) { -#if defined(a86) +#if defined(__amd64__) || defined(__i386__) asmv("int3"); #else #warning "Not implemented!" diff --git a/Kernel/library/md5.c b/Kernel/library/md5.c index 9a8d052f..45606595 100644 --- a/Kernel/library/md5.c +++ b/Kernel/library/md5.c @@ -134,7 +134,7 @@ void md5Finalize(MD5Context *ctx) (uint32_t)(ctx->input[(j * 4)]); } input[14] = (uint32_t)(ctx->size * 8); -#ifdef a32 +#ifdef __i386__ input[15] = (uint32_t)((uint64_t)(((uint64_t)ctx->size >> 32) | ((uint64_t)ctx->size << 32)) >> 32); #else input[15] = (uint32_t)((ctx->size * 8) >> 32); diff --git a/Kernel/library/simd_memcpy.cpp b/Kernel/library/simd_memcpy.cpp index 35f84476..e9794ef5 100644 --- a/Kernel/library/simd_memcpy.cpp +++ b/Kernel/library/simd_memcpy.cpp @@ -29,7 +29,7 @@ TODO: Replace these functions with even more optimized versions. EXTERNC void *memcpy_sse(void *dest, const void *src, size_t n) { -#if defined(a64) +#if defined(__amd64__) char *d = (char *)dest; const char *s = (const char *)src; @@ -65,13 +65,13 @@ EXTERNC void *memcpy_sse(void *dest, const void *src, size_t n) } memcpy_unsafe(d, s, n); -#endif // defined(a64) +#endif // defined(__amd64__) return dest; } EXTERNC void *memcpy_sse2(void *dest, const void *src, size_t n) { -#if defined(a64) +#if defined(__amd64__) char *d = (char *)dest; const char *s = (const char *)src; @@ -107,13 +107,13 @@ EXTERNC void *memcpy_sse2(void *dest, const void *src, size_t n) } memcpy_unsafe(d, s, n); -#endif // defined(a64) +#endif // defined(__amd64__) return dest; } EXTERNC void *memcpy_sse3(void *dest, const void *src, size_t n) { -#if defined(a64) +#if defined(__amd64__) char *d = (char *)dest; const char *s = (const char *)src; @@ -149,13 +149,13 @@ EXTERNC void *memcpy_sse3(void *dest, const void *src, size_t n) } memcpy_unsafe(d, s, n); -#endif // defined(a64) +#endif // defined(__amd64__) return dest; } EXTERNC void *memcpy_ssse3(void *dest, const void *src, size_t n) { -#if defined(a64) +#if defined(__amd64__) char *d = (char *)dest; const char *s = (const char *)src; @@ -191,13 +191,13 @@ EXTERNC void *memcpy_ssse3(void *dest, const void *src, size_t n) } memcpy_unsafe(d, s, n); -#endif // defined(a64) +#endif // defined(__amd64__) return dest; } EXTERNC void *memcpy_sse4_1(void *dest, const void *src, size_t n) { -#if defined(a64) +#if defined(__amd64__) char *d = (char *)dest; const char *s = (const char *)src; @@ -233,13 +233,13 @@ EXTERNC void *memcpy_sse4_1(void *dest, const void *src, size_t n) } memcpy_unsafe(d, s, n); -#endif // defined(a64) +#endif // defined(__amd64__) return dest; } EXTERNC void *memcpy_sse4_2(void *dest, const void *src, size_t n) { -#if defined(a64) +#if defined(__amd64__) char *d = (char *)dest; const char *s = (const char *)src; @@ -275,6 +275,6 @@ EXTERNC void *memcpy_sse4_2(void *dest, const void *src, size_t n) } memcpy_unsafe(d, s, n); -#endif // defined(a64) +#endif // defined(__amd64__) return dest; } diff --git a/Kernel/library/simd_memset.cpp b/Kernel/library/simd_memset.cpp index f1a0fd03..a5647aad 100644 --- a/Kernel/library/simd_memset.cpp +++ b/Kernel/library/simd_memset.cpp @@ -89,7 +89,7 @@ EXTERNC void *memset_sse4_1(void *dest, int c, size_t n) EXTERNC void *memset_sse4_2(void *dest, int c, size_t n) { -#if defined(a64) +#if defined(__amd64__) char *d = (char *)dest; if (((uintptr_t)d & 0xF) == 0) diff --git a/Kernel/profiling/cyg.cpp b/Kernel/profiling/cyg.cpp index bdea1548..dc56f077 100644 --- a/Kernel/profiling/cyg.cpp +++ b/Kernel/profiling/cyg.cpp @@ -44,9 +44,9 @@ EXTERNC nsa NIF void __cyg_profile_func_enter(void *Function, void *CallSite) return; while (Wait) -#if defined(a86) +#if defined(__amd64__) || defined(__i386__) asmv("pause"); -#elif defined(aa64) +#elif defined(__aarch64__) asmv("yield"); #endif Wait = true; @@ -81,9 +81,9 @@ EXTERNC nsa NIF void __cyg_profile_func_exit(void *Function, void *CallSite) return; while (Wait) -#if defined(a86) +#if defined(__amd64__) || defined(__i386__) asmv("pause"); -#elif defined(aa64) +#elif defined(__aarch64__) asmv("yield"); #endif Wait = true; diff --git a/Kernel/subsystem/linux/include/defs.hpp b/Kernel/subsystem/linux/include/defs.hpp index 3dbc997d..28335654 100644 --- a/Kernel/subsystem/linux/include/defs.hpp +++ b/Kernel/subsystem/linux/include/defs.hpp @@ -275,7 +275,7 @@ struct linux_dirent64 struct linux_kstat { -#if defined(a64) +#if defined(__amd64__) __kernel_ulong_t st_dev; __kernel_ulong_t st_ino; __kernel_ulong_t st_nlink; @@ -295,7 +295,7 @@ struct linux_kstat __kernel_ulong_t st_ctime_nsec; #undef __unused __kernel_long_t __unused[3]; -#elif defined(a32) +#elif defined(__i386__) unsigned long st_dev; unsigned long st_ino; unsigned short st_mode; diff --git a/Kernel/subsystem/linux/syscall.cpp b/Kernel/subsystem/linux/syscall.cpp index d52512f7..d3a87fe5 100644 --- a/Kernel/subsystem/linux/syscall.cpp +++ b/Kernel/subsystem/linux/syscall.cpp @@ -733,7 +733,7 @@ struct __old_kernel_stat StatToOKStat(struct kstat stat) __no_stack_protector void __LinuxForkReturn(void *tableAddr) { -#if defined(a64) +#if defined(__amd64__) asmv("movq %0, %%cr3" ::"r"(tableAddr)); /* Load process page table */ asmv("movq $0, %rax\n"); /* Return 0 */ asmv("movq %r8, %rsp\n"); /* Restore stack pointer */ @@ -741,7 +741,7 @@ __no_stack_protector void __LinuxForkReturn(void *tableAddr) asmv("swapgs\n"); /* Swap GS back to the user GS */ asmv("sti\n"); /* Enable interrupts */ asmv("sysretq\n"); /* Return to rcx address in user mode */ -#elif defined(a32) +#elif defined(__i386__) #warning "__LinuxForkReturn not implemented for i386" #endif __builtin_unreachable(); @@ -1086,11 +1086,11 @@ static int linux_mprotect(SysFrm *, void *addr, size_t len, int prot) p_Write ? "Write" : "", (prot & linux_PROT_EXEC) ? "Exec" : ""); -#if defined(a64) +#if defined(__amd64__) CPU::x64::invlpg(addr); -#elif defined(a32) +#elif defined(__i386__) CPU::x32::invlpg(addr); -#elif defined(aa64) +#elif defined(__aarch64__) asmv("dsb sy"); asmv("tlbi vae1is, %0" : @@ -1478,7 +1478,7 @@ static pid_t linux_fork(SysFrm *sf) NewThread->Info.Compatibility = Thread->Info.Compatibility; NewThread->Security.IsCritical = Thread->Security.IsCritical; NewThread->Registers = Thread->Registers; -#if defined(a64) +#if defined(__amd64__) NewThread->Registers.rip = (uintptr_t)__LinuxForkReturn; /* For sysretq */ NewThread->Registers.rdi = (uintptr_t)NewProcess->PageTable; @@ -1488,7 +1488,7 @@ static pid_t linux_fork(SysFrm *sf) #warning "sys_fork not implemented for other platforms" #endif -#ifdef a86 +#if defined(__amd64__) || defined(__i386__) NewThread->GSBase = NewThread->ShadowGSBase; NewThread->ShadowGSBase = Thread->ShadowGSBase; NewThread->FSBase = Thread->FSBase; @@ -1559,7 +1559,7 @@ static pid_t linux_vfork(SysFrm *sf) NewThread->Info.Compatibility = Thread->Info.Compatibility; NewThread->Security.IsCritical = Thread->Security.IsCritical; NewThread->Registers = Thread->Registers; -#if defined(a64) +#if defined(__amd64__) NewThread->Registers.rip = (uintptr_t)__LinuxForkReturn; /* For sysretq */ NewThread->Registers.rdi = (uintptr_t)NewProcess->PageTable; @@ -1569,7 +1569,7 @@ static pid_t linux_vfork(SysFrm *sf) #warning "sys_fork not implemented for other platforms" #endif -#ifdef a86 +#if defined(__amd64__) || defined(__i386__) NewThread->GSBase = NewThread->ShadowGSBase; NewThread->ShadowGSBase = Thread->ShadowGSBase; NewThread->FSBase = Thread->FSBase; @@ -2101,11 +2101,11 @@ static int linux_uname(SysFrm *, struct utsname *buf) .nodename = "fennix", .release = KERNEL_VERSION, .version = KERNEL_VERSION, -#if defined(a64) +#if defined(__amd64__) .machine = "x86_64", -#elif defined(a32) +#elif defined(__i386__) .machine = "i386", -#elif defined(aa64) +#elif defined(__aarch64__) .machine = "arm64", #elif defined(aa32) .machine = "arm", @@ -2501,28 +2501,28 @@ static int linux_arch_prctl(SysFrm *, int code, unsigned long addr) { case linux_ARCH_SET_GS: { -#if defined(a64) +#if defined(__amd64__) CPU::x64::wrmsr(CPU::x64::MSRID::MSR_GS_BASE, addr); -#elif defined(a32) +#elif defined(__i386__) CPU::x32::wrmsr(CPU::x32::MSRID::MSR_GS_BASE, addr); #endif return 0; } case linux_ARCH_SET_FS: { -#if defined(a64) +#if defined(__amd64__) CPU::x64::wrmsr(CPU::x64::MSRID::MSR_FS_BASE, addr); -#elif defined(a32) +#elif defined(__i386__) CPU::x32::wrmsr(CPU::x32::MSRID::MSR_FS_BASE, addr); #endif return 0; } case linux_ARCH_GET_FS: { -#if defined(a64) +#if defined(__amd64__) *r_cst(uint64_t *, addr) = CPU::x64::rdmsr(CPU::x64::MSRID::MSR_FS_BASE); -#elif defined(a32) +#elif defined(__i386__) *r_cst(uint64_t *, addr) = CPU::x32::rdmsr(CPU::x32::MSRID::MSR_FS_BASE); #endif @@ -2530,10 +2530,10 @@ static int linux_arch_prctl(SysFrm *, int code, unsigned long addr) } case linux_ARCH_GET_GS: { -#if defined(a64) +#if defined(__amd64__) *r_cst(uint64_t *, addr) = CPU::x64::rdmsr(CPU::x64::MSRID::MSR_GS_BASE); -#elif defined(a32) +#elif defined(__i386__) *r_cst(uint64_t *, addr) = CPU::x32::rdmsr(CPU::x32::MSRID::MSR_GS_BASE); #endif @@ -4258,7 +4258,7 @@ static SyscallData LinuxSyscallsTableI386[] = { uintptr_t HandleLinuxSyscalls(SyscallsFrame *Frame) { -#if defined(a64) +#if defined(__amd64__) if (Frame->rax > sizeof(LinuxSyscallsTableAMD64) / sizeof(SyscallData)) { fixme("Syscall %d not implemented", @@ -4289,7 +4289,7 @@ uintptr_t HandleLinuxSyscalls(SyscallsFrame *Frame) debug("< [%ld:\"%s\"] = %ld", Frame->rax, Syscall.Name, sc_ret); return sc_ret; -#elif defined(a32) +#elif defined(__i386__) if (Frame->eax > sizeof(LinuxSyscallsTableI386) / sizeof(SyscallData)) { fixme("Syscall %d not implemented", @@ -4320,13 +4320,13 @@ uintptr_t HandleLinuxSyscalls(SyscallsFrame *Frame) debug("< [%d:\"%s\"] = %d", Frame->eax, Syscall.Name, sc_ret); return sc_ret; -#elif defined(aa64) +#elif defined(__aarch64__) return -linux_ENOSYS; #endif -#if defined(a64) +#if defined(__amd64__) UNUSED(LinuxSyscallsTableI386); -#elif defined(a32) +#elif defined(__i386__) UNUSED(LinuxSyscallsTableAMD64); #endif } diff --git a/Kernel/syscalls/native.cpp b/Kernel/syscalls/native.cpp index f6270712..ca4e3bde 100644 --- a/Kernel/syscalls/native.cpp +++ b/Kernel/syscalls/native.cpp @@ -35,9 +35,9 @@ struct SyscallData using namespace Memory; -#if defined(a64) +#if defined(__amd64__) typedef long arch_t; -#elif defined(a32) +#elif defined(__i386__) typedef int arch_t; #endif @@ -60,7 +60,7 @@ static SyscallData NativeSyscallsTable[sc_MaxSyscall] = { uintptr_t HandleNativeSyscalls(SysFrm *Frame) { -#if defined(a64) +#if defined(__amd64__) if (unlikely(Frame->rax > sc_MaxSyscall)) { fixme("Syscall %ld not implemented.", Frame->rax); @@ -103,7 +103,7 @@ uintptr_t HandleNativeSyscalls(SysFrm *Frame) debug("< [%d:\"%s\"] = %d", Frame->rax, Syscall.Name, sc_ret); return sc_ret; -#elif defined(a32) +#elif defined(__i386__) if (unlikely(Frame->eax > sc_MaxSyscall)) { fixme("Syscall %ld not implemented.", Frame->eax); @@ -146,7 +146,7 @@ uintptr_t HandleNativeSyscalls(SysFrm *Frame) debug("< [%d:\"%s\"] = %d", Frame->eax, Syscall.Name, sc_ret); return sc_ret; -#elif defined(aa64) +#elif defined(__aarch64__) return -ENOSYS; #endif } diff --git a/Kernel/syscalls/syscalls.cpp b/Kernel/syscalls/syscalls.cpp index 1aa57a91..d716b633 100644 --- a/Kernel/syscalls/syscalls.cpp +++ b/Kernel/syscalls/syscalls.cpp @@ -29,7 +29,7 @@ private: public: AutoSwitchPageTable() { -#if defined(a86) +#if defined(__amd64__) || defined(__i386__) asmv("mov %%cr3, %0" : "=r"(Original)); @@ -45,7 +45,7 @@ public: { debug("- %#lx %s(%d)", Original, thisProcess->Name, thisProcess->ID); -#if defined(a86) +#if defined(__amd64__) || defined(__i386__) asmv("mov %0, %%cr3" : : "r"(Original)); diff --git a/Kernel/tasking/process.cpp b/Kernel/tasking/process.cpp index 976d94e7..27259e52 100644 --- a/Kernel/tasking/process.cpp +++ b/Kernel/tasking/process.cpp @@ -27,12 +27,12 @@ #include "../kernel.h" -#if defined(a64) +#if defined(__amd64__) #include "../arch/amd64/cpu/apic.hpp" #include "../arch/amd64/cpu/gdt.hpp" -#elif defined(a32) +#elif defined(__i386__) #include "../arch/i386/cpu/apic.hpp" -#elif defined(aa64) +#elif defined(__aarch64__) #endif // #define DEBUG_TASKING 1 diff --git a/Kernel/tasking/scheduler/custom.cpp b/Kernel/tasking/scheduler/custom.cpp index 62446efe..4558f1b9 100644 --- a/Kernel/tasking/scheduler/custom.cpp +++ b/Kernel/tasking/scheduler/custom.cpp @@ -26,13 +26,13 @@ #include "../kernel.h" -#if defined(a64) +#if defined(__amd64__) #include "../arch/amd64/cpu/apic.hpp" #include "../arch/amd64/cpu/gdt.hpp" -#elif defined(a32) +#elif defined(__i386__) #include "../arch/i386/cpu/apic.hpp" #include "../arch/i386/cpu/gdt.hpp" -#elif defined(aa64) +#elif defined(__aarch64__) #endif // #define DEBUG_SCHEDULER 1 @@ -105,11 +105,11 @@ __naked __used nsa void __custom_sched_idle_loop() { -#if defined(a86) +#if defined(__amd64__) || defined(__i386__) asmv("IdleLoop:"); asmv("hlt"); asmv("jmp IdleLoop"); -#elif defined(aa64) +#elif defined(__aarch64__) asmv("IdleLoop:"); asmv("wfe"); asmv("b IdleLoop"); @@ -195,7 +195,7 @@ namespace Tasking::Scheduler void Custom::StartScheduler() { -#if defined(a86) +#if defined(__amd64__) || defined(__i386__) if (Interrupts::apicTimer[0]) { ((APIC::Timer *)Interrupts::apicTimer[0])->OneShot(CPU::x86::IRQ16, 100); @@ -235,9 +235,9 @@ namespace Tasking::Scheduler /* This will trigger the IRQ16 instantly so we won't execute the next instruction */ -#if defined(a86) +#if defined(__amd64__) || defined(__i386__) asmv("int $0x30"); -#elif defined(aa64) +#elif defined(__aarch64__) asmv("svc #0x30"); #endif } @@ -278,9 +278,9 @@ namespace Tasking::Scheduler TimeSlice += 10; #endif -#if defined(a86) +#if defined(__amd64__) || defined(__i386__) ((APIC::Timer *)Interrupts::apicTimer[GetCurrentCPU()->ID])->OneShot(CPU::x86::IRQ16, TimeSlice); -#elif defined(aa64) +#elif defined(__aarch64__) #endif } @@ -588,7 +588,7 @@ namespace Tasking::Scheduler { CurrentCPU->CurrentThread->Registers = *Frame; CPU::x64::fxsave(&CurrentCPU->CurrentThread->FPU); -#ifdef a64 +#ifdef __amd64__ CurrentCPU->CurrentThread->ShadowGSBase = CPU::x64::rdmsr(CPU::x64::MSR_SHADOW_GS_BASE); CurrentCPU->CurrentThread->GSBase = CPU::x64::rdmsr(CPU::x64::MSR_GS_BASE); CurrentCPU->CurrentThread->FSBase = CPU::x64::rdmsr(CPU::x64::MSR_FS_BASE); @@ -681,7 +681,7 @@ namespace Tasking::Scheduler *Frame = CurrentCPU->CurrentThread->Registers; -#ifdef a64 +#ifdef __amd64__ GlobalDescriptorTable::SetKernelStack((void *)((uintptr_t)CurrentCPU->CurrentThread->Stack->GetStackTop())); CPU::x64::fxrstor(&CurrentCPU->CurrentThread->FPU); CPU::x64::wrmsr(CPU::x64::MSR_SHADOW_GS_BASE, CurrentCPU->CurrentThread->ShadowGSBase); @@ -705,7 +705,7 @@ namespace Tasking::Scheduler if (CurrentCPU->CurrentThread->Security.IsDebugEnabled && CurrentCPU->CurrentThread->Security.IsKernelDebugEnabled) { -#ifdef a64 +#ifdef __amd64__ trace("%s[%ld]: RIP=%#lx RBP=%#lx RSP=%#lx", CurrentCPU->CurrentThread->Name, CurrentCPU->CurrentThread->ID, CurrentCPU->CurrentThread->Registers.rip, @@ -731,7 +731,7 @@ namespace Tasking::Scheduler Custom::Custom(Task *ctx) : Base(ctx), Interrupts::Handler(16) /* IRQ16 */ { -#if defined(a86) +#if defined(__amd64__) || defined(__i386__) // Map the IRQ16 to the first CPU. ((APIC::APIC *)Interrupts::apic[0])->RedirectIRQ(0, CPU::x86::IRQ16 - CPU::x86::IRQ0, 1); #endif diff --git a/Kernel/tasking/signal.cpp b/Kernel/tasking/signal.cpp index 248822ea..891ad5b6 100644 --- a/Kernel/tasking/signal.cpp +++ b/Kernel/tasking/signal.cpp @@ -20,11 +20,11 @@ #include #include -#if defined(a64) +#if defined(__amd64__) #include "../arch/amd64/cpu/gdt.hpp" -#elif defined(a32) +#elif defined(__i386__) #include "../arch/i386/cpu/gdt.hpp" -#elif defined(aa64) +#elif defined(__aarch64__) #endif #include "../kernel.h" diff --git a/Kernel/tasking/task.cpp b/Kernel/tasking/task.cpp index 937ff147..0f42053b 100644 --- a/Kernel/tasking/task.cpp +++ b/Kernel/tasking/task.cpp @@ -27,12 +27,12 @@ #include "../kernel.h" -#if defined(a64) +#if defined(__amd64__) #include "../arch/amd64/cpu/apic.hpp" #include "../arch/amd64/cpu/gdt.hpp" -#elif defined(a32) +#elif defined(__i386__) #include "../arch/i386/cpu/apic.hpp" -#elif defined(aa64) +#elif defined(__aarch64__) #endif // #define DEBUG_TASKING 1 diff --git a/Kernel/tasking/thread.cpp b/Kernel/tasking/thread.cpp index cf95274e..8365c0a6 100644 --- a/Kernel/tasking/thread.cpp +++ b/Kernel/tasking/thread.cpp @@ -27,13 +27,13 @@ #include "../kernel.h" -#if defined(a64) +#if defined(__amd64__) #include "../arch/amd64/cpu/apic.hpp" #include "../arch/amd64/cpu/gdt.hpp" -#elif defined(a32) +#elif defined(__i386__) #include "../arch/i386/cpu/apic.hpp" #include "../arch/i386/cpu/gdt.hpp" -#elif defined(aa64) +#elif defined(__aarch64__) #endif // #define DEBUG_TASKING 1 @@ -157,7 +157,7 @@ namespace Tasking uintptr_t Arg5, uintptr_t Arg6, void *Function) { -#if defined(a64) +#if defined(__amd64__) this->Registers.rdi = Arg1; this->Registers.rsi = Arg2; this->Registers.rdx = Arg3; @@ -166,7 +166,7 @@ namespace Tasking this->Registers.r9 = Arg6; if (Function != nullptr) this->Registers.rip = (uint64_t)Function; -#elif defined(a32) +#elif defined(__i386__) this->Registers.eax = Arg1; this->Registers.ebx = Arg2; this->Registers.ecx = Arg3; @@ -316,11 +316,11 @@ namespace Tasking uintptr_t StackPointerReg = ((uintptr_t)this->Stack->GetStackTop() - SubtractStack); // assert(!(StackPointerReg & 0xF)); -#if defined(a64) +#if defined(__amd64__) this->Registers.rsp = StackPointerReg; -#elif defined(a32) +#elif defined(__i386__) this->Registers.esp = StackPointerReg; -#elif defined(aa64) +#elif defined(__aarch64__) this->Registers.sp = StackPointerReg; #endif @@ -338,17 +338,17 @@ namespace Tasking if (Compatibility != Native) return; -#if defined(a64) +#if defined(__amd64__) this->Registers.rdi = (uintptr_t)argvLen; // argc this->Registers.rsi = (uintptr_t)(this->Registers.rsp + 8); // argv this->Registers.rcx = (uintptr_t)envpLen; // envc this->Registers.rdx = (uintptr_t)(this->Registers.rsp + 8 + (8 * argvLen) + 8); // envp -#elif defined(a32) +#elif defined(__i386__) this->Registers.eax = (uintptr_t)argvLen; // argc this->Registers.ebx = (uintptr_t)(this->Registers.esp + 4); // argv this->Registers.ecx = (uintptr_t)envpLen; // envc this->Registers.edx = (uintptr_t)(this->Registers.esp + 4 + (4 * argvLen) + 4); // envp -#elif defined(aa64) +#elif defined(__aarch64__) this->Registers.x0 = (uintptr_t)argvLen; // argc this->Registers.x1 = (uintptr_t)(this->Registers.sp + 8); // argv this->Registers.x2 = (uintptr_t)envpLen; // envc @@ -465,11 +465,11 @@ namespace Tasking this->vma = this->Parent->vma; -#if defined(a64) +#if defined(__amd64__) this->Registers.rip = EntryPoint; -#elif defined(a32) +#elif defined(__i386__) this->Registers.eip = EntryPoint; -#elif defined(aa64) +#elif defined(__aarch64__) this->Registers.pc = EntryPoint; #endif @@ -483,7 +483,7 @@ namespace Tasking this->Security.IsCritical = true; this->Stack = new Memory::StackGuard(false, this->vma); -#if defined(a64) +#if defined(__amd64__) this->ShadowGSBase = CPU::x64::rdmsr(CPU::x64::MSRID::MSR_SHADOW_GS_BASE); this->GSBase = CPU::x64::rdmsr(CPU::x64::MSRID::MSR_GS_BASE); @@ -496,7 +496,7 @@ namespace Tasking this->Registers.rflags.AC = 0; this->Registers.rsp = ((uintptr_t)this->Stack->GetStackTop()); POKE(uintptr_t, this->Registers.rsp) = (uintptr_t)ThreadDoExit; -#elif defined(a32) +#elif defined(__i386__) this->Registers.cs = GDT_KERNEL_CODE; this->Registers.r3_ss = GDT_KERNEL_DATA; this->Registers.eflags.AlwaysOne = 1; @@ -505,7 +505,7 @@ namespace Tasking this->Registers.eflags.AC = 0; this->Registers.esp = ((uintptr_t)this->Stack->GetStackTop()); POKE(uintptr_t, this->Registers.esp) = (uintptr_t)ThreadDoExit; -#elif defined(aa64) +#elif defined(__aarch64__) this->Registers.pc = EntryPoint; this->Registers.sp = ((uintptr_t)this->Stack->GetStackTop()); POKE(uintptr_t, this->Registers.sp) = (uintptr_t)ThreadDoExit; @@ -534,7 +534,7 @@ namespace Tasking gsT->TempStack = 0x0; gsT->t = this; -#if defined(a64) +#if defined(__amd64__) this->ShadowGSBase = (uintptr_t)gst.VirtualAddress; this->GSBase = 0; this->FSBase = 0; @@ -550,7 +550,7 @@ namespace Tasking an exception. */ this->SetupUserStack_x86_64(argv, envp, auxv, Compatibility); -#elif defined(a32) +#elif defined(__i386__) this->Registers.cs = GDT_USER_CODE; this->Registers.r3_ss = GDT_USER_DATA; this->Registers.eflags.AlwaysOne = 1; @@ -563,7 +563,7 @@ namespace Tasking an exception. */ this->SetupUserStack_x86_32(argv, envp, auxv); -#elif defined(aa64) +#elif defined(__aarch64__) this->SetupUserStack_aarch64(argv, envp, auxv); #endif #ifdef DEBUG_TASKING @@ -612,7 +612,7 @@ namespace Tasking this->FPU.fcw = 0b0000001100111111; #ifdef DEBUG -#ifdef a64 +#ifdef __amd64__ debug("Thread EntryPoint: %#lx => RIP: %#lx", this->EntryPoint, this->Registers.rip); if (this->Parent->Security.ExecutionMode == TaskExecutionMode::User) @@ -623,7 +623,7 @@ namespace Tasking debug("Thread stack region is %#lx-%#lx (K) and rsp is %#lx", this->Stack->GetStackBottom(), this->Stack->GetStackTop(), this->Registers.rsp); -#elif defined(a32) +#elif defined(__i386__) debug("Thread EntryPoint: %#lx => RIP: %#lx", this->EntryPoint, this->Registers.eip); if (Parent->Security.ExecutionMode == TaskExecutionMode::User) @@ -634,7 +634,7 @@ namespace Tasking debug("Thread stack region is %#lx-%#lx (K) and rsp is %#lx", this->Stack->GetStackBottom(), this->Stack->GetStackTop(), this->Registers.esp); -#elif defined(aa64) +#elif defined(__aarch64__) #endif debug("Created %s thread \"%s\"(%d) in process \"%s\"(%d)", this->Security.ExecutionMode == TaskExecutionMode::User ? "user" : "kernel", diff --git a/Kernel/tests/macros.cpp b/Kernel/tests/macros.cpp index 947c6120..90f9c2fe 100644 --- a/Kernel/tests/macros.cpp +++ b/Kernel/tests/macros.cpp @@ -28,23 +28,23 @@ /* static assert, no constructor needed */ -#ifdef a64 +#ifdef __amd64__ #if UINTPTR_MAX != UINT64_MAX #error "uintptr_t is not 64-bit!" #endif // UINTPTR_MAX != UINT64_MAX -#endif // a64 +#endif // __amd64__ -#ifdef a32 +#ifdef __i386__ #if UINTPTR_MAX != UINT32_MAX #error "uintptr_t is not 32-bit!" #endif // UINTPTR_MAX != UINT32_MAX -#endif // a32 +#endif // __i386__ -#ifdef aa64 +#ifdef __aarch64__ #if UINTPTR_MAX != UINT64_MAX #error "uintptr_t is not 64-bit!" #endif // UINTPTR_MAX != UINT64_MAX -#endif // aa64 +#endif // __aarch64__ #ifndef __fennix__ #error "This compiler is not supported!" diff --git a/Kernel/tests/mem_allocs.cpp b/Kernel/tests/mem_allocs.cpp index ab3815a1..8fc65e03 100644 --- a/Kernel/tests/mem_allocs.cpp +++ b/Kernel/tests/mem_allocs.cpp @@ -126,7 +126,7 @@ extern bool DebuggerIsAttached; void TestMemoryAllocation() { return; /* Bit annoying to have to wait for this to finish */ -#ifdef a32 +#ifdef __i386__ return; /* Not ready for now. */ #endif if (DebuggerIsAttached) diff --git a/Kernel/tests/rng.cpp b/Kernel/tests/rng.cpp index 8bffb7bf..7605d6e3 100644 --- a/Kernel/tests/rng.cpp +++ b/Kernel/tests/rng.cpp @@ -38,7 +38,7 @@ __constructor void TestRandom() if (strcmp(CPU::Hypervisor(), x86_CPUID_VENDOR_TCG) == 0) RDRANDFlag = 0; -#if defined(a86) +#if defined(__amd64__) || defined(__i386__) if (RDRANDFlag) { uintptr_t RDSEEDValue = 0; diff --git a/Kernel/tests/taskmgr.cpp b/Kernel/tests/taskmgr.cpp index 5daa6f07..d58ec62c 100644 --- a/Kernel/tests/taskmgr.cpp +++ b/Kernel/tests/taskmgr.cpp @@ -137,15 +137,15 @@ void TaskMgr() continue; int State = Proc->State.load(); uint64_t ProcessCpuUsage = GetUsage(OldSystemTime, &Proc->Info); -#if defined(a64) +#if defined(__amd64__) printf("\e%s-> \eAABBCC%s \e00AAAA%s %ld%% (KT: %ld UT: %ld)\n", Statuses[State], Proc->Name, StatusesSign[State], ProcessCpuUsage, Proc->Info.KernelTime, Proc->Info.UserTime); -#elif defined(a32) +#elif defined(__i386__) printf("\e%s-> \eAABBCC%s \e00AAAA%s %lld%% (KT: %lld UT: %lld)\n", Statuses[State], Proc->Name, StatusesSign[State], ProcessCpuUsage, Proc->Info.KernelTime, Proc->Info.UserTime); -#elif defined(aa64) +#elif defined(__aarch64__) #endif foreach (auto Thd in Proc->Threads) @@ -154,26 +154,26 @@ void TaskMgr() continue; State = Thd->State.load(); uint64_t ThreadCpuUsage = GetUsage(OldSystemTime, &Thd->Info); -#if defined(a64) +#if defined(__amd64__) printf(" \e%s-> \eAABBCC%s \e00AAAA%s %ld%% (KT: %ld UT: %ld, IP: \e24FF2B%#lx \eEDFF24%s\e00AAAA)\n\eAABBCC", Statuses[State], Thd->Name, StatusesSign[State], ThreadCpuUsage, Thd->Info.KernelTime, Thd->Info.UserTime, Thd->Registers.rip, "unknown"); -#elif defined(a32) +#elif defined(__i386__) printf(" \e%s-> \eAABBCC%s \e00AAAA%s %lld%% (KT: %lld UT: %lld, IP: \e24FF2B%#x \eEDFF24%s\e00AAAA)\n\eAABBCC", Statuses[State], Thd->Name, StatusesSign[State], ThreadCpuUsage, Thd->Info.KernelTime, Thd->Info.UserTime, Thd->Registers.eip, "unknown"); -#elif defined(aa64) +#elif defined(__aarch64__) #endif } } OldSystemTime = TimeManager->GetCounter(); -#if defined(a64) +#if defined(__amd64__) register uintptr_t CurrentStackAddress asm("rsp"); printf("Sanity: %d, Stack: %#lx", sanity++, CurrentStackAddress); -#elif defined(a32) +#elif defined(__i386__) register uintptr_t CurrentStackAddress asm("esp"); printf("Sanity: %d, Stack: %#x", sanity++, CurrentStackAddress); -#elif defined(aa64) +#elif defined(__aarch64__) register uintptr_t CurrentStackAddress asm("sp"); printf("Sanity: %d, Stack: %#lx", sanity++, CurrentStackAddress); #endif diff --git a/Makefile b/Makefile index 6e6e4dd1..75b28c63 100644 --- a/Makefile +++ b/Makefile @@ -1,5 +1,5 @@ -include Makefile.conf +include config.mk .PHONY: default tools clean @@ -9,7 +9,7 @@ default: # For tap0 # -netdev tap,id=usernet0,ifname=tap0,script=no,downscript=no -QEMU = ./$(QEMU_PATH)$(QEMU_ARCH) +QEMU = $(__CONF_QEMU_PATH) QEMUFLAGS := -display gtk ifeq ($(OSARCH), amd64) @@ -205,7 +205,7 @@ vscode_debug: build_kernel build_userspace build_drivers build_image vscode_debu qemu: qemu_vdisk clean_logs touch serial.log parallel.log - # x-terminal-emulator -e tail -f serial.log & +# x-terminal-emulator -e tail -f serial.log & # x-terminal-emulator -e tail -f parallel.log & $(QEMU) $(QEMU_UEFI_BIOS) -cpu host $(QEMUFLAGS) $(QEMUHWACCELERATION) $(QEMUMEMORY) $(QEMU_SMP) diff --git a/Makefile.conf b/Makefile.conf deleted file mode 100644 index dfb77f85..00000000 --- a/Makefile.conf +++ /dev/null @@ -1,66 +0,0 @@ -# If the OS we are building should be compiled -# for debugging purposes. -DEBUG = 1 - -# Operating system name. -OSNAME = Fennix - -# OS architecture: amd64, i386, aarch64 -OSARCH = amd64 - -# Kernel version. -KERNEL_VERSION = dev - -# Which bootloader to use. -# Available bootloaders: -# - grub - GRUB -# - limine - Limine -BOOTLOADER = grub - -BUILD_KERNEL = 1 -#BUILD_USERSPACE = 1 -BUILD_DRIVERS = 1 - -QUIET_BUILD = 1 - -# The path of the cross-compiler. -COMPILER_PATH = tools/cross/bin - -# Qemu path. If you want to use the one -# you have installed in your system, change -# it to /usr/bin/qemu-system- -# (do not include x86_64 or i386, it will be -# added automatically depending on the OSARCH) -QEMU_PATH = tools/cross/bin/qemu-system- - -# Set libc to use. Available options: -# - internal - Use the internal libc -# - musl - Use musl libc (linux syscalls) -USE_LIBC = musl - -# Build all libraries as static libraries. -USERSPACE_STATIC_LIBS = 0 - - - - - - - - - -# Make related variables -# ----------------------- -# Do not change anything below this line unless -# you know what you are doing. - -ifeq ($(OSARCH), amd64) -COMPILER_ARCH = x86_64-fennix- -QEMU_ARCH = x86_64 -else ifeq ($(OSARCH), i386) -COMPILER_ARCH = i386-fennix- -QEMU_ARCH = i386 -else ifeq ($(OSARCH), aarch64) -COMPILER_ARCH = aarch64-fennix- -QEMU_ARCH = aarch64 -endif diff --git a/Userspace/.vscode/c_cpp_properties.json b/Userspace/.vscode/c_cpp_properties.json index a8297824..ba4af986 100644 --- a/Userspace/.vscode/c_cpp_properties.json +++ b/Userspace/.vscode/c_cpp_properties.json @@ -13,8 +13,6 @@ "KERNEL_VERSION=\"1.0\"", "GIT_COMMIT=\"0000000000000000000000000000000000000000\"", "GIT_COMMIT_SHORT=\"0000000\"", - "a64", - "a86", "DEBUG=\"1\"" ], "compilerPath": "${workspaceFolder}/../tools/cross/bin/x86_64-fennix-gcc", @@ -64,8 +62,6 @@ "KERNEL_VERSION=\"1.0\"", "GIT_COMMIT=\"0000000000000000000000000000000000000000\"", "GIT_COMMIT_SHORT=\"0000000\"", - "a32", - "a86", "DEBUG=\"1\"" ], "compilerPath": "${workspaceFolder}/../tools/cross/bin/i386-fennix-gcc", diff --git a/Userspace/Makefile b/Userspace/Makefile index 88a85f38..ff8714fa 100644 --- a/Userspace/Makefile +++ b/Userspace/Makefile @@ -1,5 +1,5 @@ # Config file -include ../Makefile.conf +include ../config.mk cwd := $(CURDIR) PREFIX := $(cwd)/out/ diff --git a/Userspace/apps/base/Makefile b/Userspace/apps/base/Makefile index badaa21d..8160aa65 100644 --- a/Userspace/apps/base/Makefile +++ b/Userspace/apps/base/Makefile @@ -1,5 +1,5 @@ # Config file -include ../../../Makefile.conf +include ../../../config.mk cwd := $(CURDIR) CACHE_DIR := $(cwd)/../../cache diff --git a/Userspace/apps/base/cross_test/Makefile b/Userspace/apps/base/cross_test/Makefile index ebd3f0a5..1caa63be 100644 --- a/Userspace/apps/base/cross_test/Makefile +++ b/Userspace/apps/base/cross_test/Makefile @@ -1,7 +1,7 @@ WORKSPACE := ../../../ # Config file -include ../$(WORKSPACE)Makefile.conf +include ../$(WORKSPACE)config.mk FILENAME = utest_ diff --git a/Userspace/apps/base/echo/Makefile b/Userspace/apps/base/echo/Makefile index 7d46efb8..a94dd8bf 100644 --- a/Userspace/apps/base/echo/Makefile +++ b/Userspace/apps/base/echo/Makefile @@ -1,7 +1,7 @@ WORKSPACE := ../../../ # Config file -include ../$(WORKSPACE)Makefile.conf +include ../$(WORKSPACE)config.mk CC = ../$(WORKSPACE)$(COMPILER_PATH)/$(COMPILER_ARCH)gcc CPP = ../$(WORKSPACE)$(COMPILER_PATH)/$(COMPILER_ARCH)g++ diff --git a/Userspace/apps/base/fsh/Makefile b/Userspace/apps/base/fsh/Makefile index c54b16b8..7e8a8925 100644 --- a/Userspace/apps/base/fsh/Makefile +++ b/Userspace/apps/base/fsh/Makefile @@ -1,7 +1,7 @@ WORKSPACE := ../../../ # Config file -include ../$(WORKSPACE)Makefile.conf +include ../$(WORKSPACE)config.mk CC = ../$(WORKSPACE)$(COMPILER_PATH)/$(COMPILER_ARCH)gcc CPP = ../$(WORKSPACE)$(COMPILER_PATH)/$(COMPILER_ARCH)g++ diff --git a/Userspace/apps/base/utest/Makefile b/Userspace/apps/base/utest/Makefile index 81af0c7f..fe732e41 100644 --- a/Userspace/apps/base/utest/Makefile +++ b/Userspace/apps/base/utest/Makefile @@ -1,7 +1,7 @@ WORKSPACE := ../../../ # Config file -include ../$(WORKSPACE)Makefile.conf +include ../$(WORKSPACE)config.mk CC = ../$(WORKSPACE)$(COMPILER_PATH)/$(COMPILER_ARCH)gcc CPP = ../$(WORKSPACE)$(COMPILER_PATH)/$(COMPILER_ARCH)g++ diff --git a/Userspace/apps/system/init/Makefile b/Userspace/apps/system/init/Makefile index b220b9dd..1d922878 100644 --- a/Userspace/apps/system/init/Makefile +++ b/Userspace/apps/system/init/Makefile @@ -1,7 +1,7 @@ WORKSPACE := ../../../ # Config file -include ../$(WORKSPACE)Makefile.conf +include ../$(WORKSPACE)config.mk CC = ../$(WORKSPACE)$(COMPILER_PATH)/$(COMPILER_ARCH)gcc CPP = ../$(WORKSPACE)$(COMPILER_PATH)/$(COMPILER_ARCH)g++ diff --git a/Userspace/libc/ElfInterpreter/Makefile b/Userspace/libc/ElfInterpreter/Makefile index 60084bc0..91916abb 100644 --- a/Userspace/libc/ElfInterpreter/Makefile +++ b/Userspace/libc/ElfInterpreter/Makefile @@ -1,5 +1,5 @@ # Config file -include ../../../Makefile.conf +include ../../../config.mk NAME=ld diff --git a/Userspace/libc/runtime/Makefile b/Userspace/libc/runtime/Makefile index 5326563b..3c8885d1 100644 --- a/Userspace/libc/runtime/Makefile +++ b/Userspace/libc/runtime/Makefile @@ -1,5 +1,5 @@ # Config file -include ../../../Makefile.conf +include ../../../config.mk CC = ../../../$(COMPILER_PATH)/$(COMPILER_ARCH)gcc AS = ../../../$(COMPILER_PATH)/$(COMPILER_ARCH)as diff --git a/Userspace/libc/src/Makefile b/Userspace/libc/src/Makefile index 91b9aa2b..d798f690 100644 --- a/Userspace/libc/src/Makefile +++ b/Userspace/libc/src/Makefile @@ -1,5 +1,5 @@ # Config file -include ../../../Makefile.conf +include ../../../config.mk NAME=c diff --git a/Userspace/libs/libgcc/Makefile b/Userspace/libs/libgcc/Makefile index 6e2e235e..f597dcea 100644 --- a/Userspace/libs/libgcc/Makefile +++ b/Userspace/libs/libgcc/Makefile @@ -1,5 +1,5 @@ # Config file -include ../../../Makefile.conf +include ../../../config.mk NAME=gcc diff --git a/config.mk b/config.mk new file mode 100644 index 00000000..06040b78 --- /dev/null +++ b/config.mk @@ -0,0 +1,95 @@ +# If the OS we are building should be compiled +# for debugging purposes. +DEBUG = 1 + +# Operating system name. +OSNAME = Fennix + +# OS architecture: amd64, i386, aarch64 +OSARCH = amd64 + +# Kernel version. +KERNEL_VERSION = dev + +# Which bootloader to use. +# Available bootloaders: +# - grub - GRUB +# - limine - Limine +BOOTLOADER = grub + +BUILD_KERNEL = 1 +# BUILD_USERSPACE = 1 +# BUILD_DRIVERS = 1 + +QUIET_BUILD = 1 + +# The path of the cross-compiler. +# Default: $(CURDIR)/tools/cross/ +COMPILER_PATH := $(CURDIR)/tools/cross/ + +# Qemu path. If you want to use the one +# you have installed in your system, change +# it to /usr/bin/qemu-system- +# (do not include x86_64 or i386, it will be +# added automatically depending on the OSARCH) +# Default: $(CURDIR)/tools/cross/ +__CONF_QEMU_PATH := $(CURDIR)/tools/cross/ + +# Set libc to use. Available options: +# - internal - Use the internal libc +USE_LIBC = internal + +# Build all libraries as static libraries. +USERSPACE_STATIC_LIBS = 0 + + + + + + + + + +# Make related variables +# ----------------------- +# Do not change anything below this line unless +# you know what you are doing. + +ifeq ($(OSARCH), amd64) +COMPILER_ARCH = x86_64 +__CONF_QEMU_PATH := $(__CONF_QEMU_PATH)bin/qemu-system-x86_64 +else ifeq ($(OSARCH), i386) +COMPILER_ARCH = i386 +__CONF_QEMU_PATH := $(__CONF_QEMU_PATH)bin/qemu-system-i386 +else ifeq ($(OSARCH), aarch64) +COMPILER_ARCH = aarch64 +__CONF_QEMU_PATH := $(__CONF_QEMU_PATH)bin/qemu-system-aarch64 +endif + +export __CONF_QEMU_PATH + +__CONF_CC := $(COMPILER_PATH)/bin/$(COMPILER_ARCH)-fennix-gcc +__CONF_CPP := $(COMPILER_PATH)/bin/$(COMPILER_ARCH)-fennix-g++ +__CONF_LD := $(COMPILER_PATH)/bin/$(COMPILER_ARCH)-fennix-ld +__CONF_AS := $(COMPILER_PATH)/bin/$(COMPILER_ARCH)-fennix-as +__CONF_NM := $(COMPILER_PATH)/bin/$(COMPILER_ARCH)-fennix-nm +__CONF_OBJCOPY := $(COMPILER_PATH)/bin/$(COMPILER_ARCH)-fennix-objcopy +__CONF_OBJDUMP := $(COMPILER_PATH)/bin/$(COMPILER_ARCH)-fennix-objdump +__CONF_GDB := $(COMPILER_PATH)/bin/$(COMPILER_ARCH)-fennix-gdb + +export __CONF_CC +export __CONF_CPP +export __CONF_LD +export __CONF_AS +export __CONF_NM +export __CONF_OBJCOPY +export __CONF_OBJDUMP +export __CONF_GDB + +export DEBUG +export OSNAME +export OSARCH +export KERNEL_VERSION + +undefine COMPILER_PATH +undefine COMPILER_ARCH diff --git a/tools/Makefile b/tools/Makefile index d4f224ca..28e6bbe8 100644 --- a/tools/Makefile +++ b/tools/Makefile @@ -2,7 +2,7 @@ WORKING_DIR = $(CURDIR) CROSS_DIR=$(WORKING_DIR)/cross export PATH := $(CROSS_DIR):$(PATH) -QEMU_VERSION = 8.2.8 +QEMU_VERSION = 9.1.2 all: do_tools do_limine __clone_all do_binutils do_gcc do_qemu diff --git a/tools/website/index.html b/tools/website/index.html index ec574f73..b0cda18a 100644 --- a/tools/website/index.html +++ b/tools/website/index.html @@ -81,7 +81,7 @@

Configuring your kernel

If you want to build different architecture, use other QEMU binary or change kernel name you can find in - Makefile.conf file.
+ config.mk file.

DEBUG • If it's set to 1, the kernel will be compiled in debug mode.
TESTING • Enable unit testing.