From 9e21c5326bbe7b85a361f1a449c153f136a8ebc3 Mon Sep 17 00:00:00 2001 From: Alex Date: Wed, 29 Mar 2023 03:02:49 +0300 Subject: [PATCH] Support i386 --- .vscode/c_cpp_properties.json | 12 +++---- .../{i686 => i386}/ArithmeticOperations.c | 0 Architecture/{i686 => i386}/Bootstrap/MB2.asm | 0 .../{i686 => i386}/Bootstrap/MB2Header.asm | 0 .../{i686 => i386}/Bootstrap/MB2PageTable.asm | 0 .../{i686 => i386}/Bootstrap/Multiboot2.cpp | 0 .../{i686 => i386}/Interrupts/8259PIC.cpp | 0 .../{i686 => i386}/Interrupts/pic.hpp | 0 Architecture/{i686 => i386}/SystemCalls.cpp | 0 .../cpu/GlobalDescriptorTable.cpp | 0 .../cpu/SymmetricMultiprocessing.cpp | 0 Architecture/{i686 => i386}/cpu/apic.hpp | 0 Architecture/{i686 => i386}/cpu/gdt.hpp | 0 Architecture/{i686 => i386}/cpu/idt.hpp | 0 Architecture/{i686 => i386}/linker.ld | 0 Architecture/{i686 => i386}/runtime/crt0.c | 0 Architecture/{i686 => i386}/runtime/crt1.c | 0 .../{i686 => i386}/runtime/crtbegin.c | 0 Architecture/{i686 => i386}/runtime/crtend.c | 0 Architecture/{i686 => i386}/runtime/crti.S | 0 Architecture/{i686 => i386}/runtime/crtn.S | 0 Core/Crash/CrashHandler.cpp | 4 +-- Core/InterruptsManager.cpp | 4 +-- DAPI.hpp | 2 +- Fex.hpp | 2 +- Makefile | 34 +++++++++---------- Tasking/Scheduler.cpp | 2 +- Tasking/Task.cpp | 2 +- 28 files changed, 31 insertions(+), 31 deletions(-) rename Architecture/{i686 => i386}/ArithmeticOperations.c (100%) rename Architecture/{i686 => i386}/Bootstrap/MB2.asm (100%) rename Architecture/{i686 => i386}/Bootstrap/MB2Header.asm (100%) rename Architecture/{i686 => i386}/Bootstrap/MB2PageTable.asm (100%) rename Architecture/{i686 => i386}/Bootstrap/Multiboot2.cpp (100%) rename Architecture/{i686 => i386}/Interrupts/8259PIC.cpp (100%) rename Architecture/{i686 => i386}/Interrupts/pic.hpp (100%) rename Architecture/{i686 => i386}/SystemCalls.cpp (100%) rename Architecture/{i686 => i386}/cpu/GlobalDescriptorTable.cpp (100%) rename Architecture/{i686 => i386}/cpu/SymmetricMultiprocessing.cpp (100%) rename Architecture/{i686 => i386}/cpu/apic.hpp (100%) rename Architecture/{i686 => i386}/cpu/gdt.hpp (100%) rename Architecture/{i686 => i386}/cpu/idt.hpp (100%) rename Architecture/{i686 => i386}/linker.ld (100%) rename Architecture/{i686 => i386}/runtime/crt0.c (100%) rename Architecture/{i686 => i386}/runtime/crt1.c (100%) rename Architecture/{i686 => i386}/runtime/crtbegin.c (100%) rename Architecture/{i686 => i386}/runtime/crtend.c (100%) rename Architecture/{i686 => i386}/runtime/crti.S (100%) rename Architecture/{i686 => i386}/runtime/crtn.S (100%) diff --git a/.vscode/c_cpp_properties.json b/.vscode/c_cpp_properties.json index 6afd451..ce59b72 100644 --- a/.vscode/c_cpp_properties.json +++ b/.vscode/c_cpp_properties.json @@ -37,10 +37,10 @@ "-Wpointer-arith", "-Wcast-align", "-Wredundant-decls", - "-Winit-self", + "-Winit-self", "-Wswitch-default", "-Wstrict-overflow=5", - "-Wconversion", + "-Wconversion", // C++ flags "-fno-rtti", @@ -84,7 +84,7 @@ "a32", "DEBUG=\"1\"" ], - "compilerPath": "${workspaceFolder}/../tools/cross/bin/i686-elf-gcc", + "compilerPath": "${workspaceFolder}/../tools/cross/bin/i386-elf-gcc", "cStandard": "c17", "cppStandard": "c++20", "intelliSenseMode": "gcc-x86", @@ -109,17 +109,17 @@ "-Wpointer-arith", "-Wcast-align", "-Wredundant-decls", - "-Winit-self", + "-Winit-self", "-Wswitch-default", "-Wstrict-overflow=5", - "-Wconversion", + "-Wconversion", // C++ flags "-fno-rtti", "-fexceptions", // Linker flags - "-T${workspaceFolder}/Architecture/i686/linker.ld", + "-T${workspaceFolder}/Architecture/i386/linker.ld", "-Wl,-static,--no-dynamic-linker,-ztext", "-nostdlib", "-nodefaultlibs", diff --git a/Architecture/i686/ArithmeticOperations.c b/Architecture/i386/ArithmeticOperations.c similarity index 100% rename from Architecture/i686/ArithmeticOperations.c rename to Architecture/i386/ArithmeticOperations.c diff --git a/Architecture/i686/Bootstrap/MB2.asm b/Architecture/i386/Bootstrap/MB2.asm similarity index 100% rename from Architecture/i686/Bootstrap/MB2.asm rename to Architecture/i386/Bootstrap/MB2.asm diff --git a/Architecture/i686/Bootstrap/MB2Header.asm b/Architecture/i386/Bootstrap/MB2Header.asm similarity index 100% rename from Architecture/i686/Bootstrap/MB2Header.asm rename to Architecture/i386/Bootstrap/MB2Header.asm diff --git a/Architecture/i686/Bootstrap/MB2PageTable.asm b/Architecture/i386/Bootstrap/MB2PageTable.asm similarity index 100% rename from Architecture/i686/Bootstrap/MB2PageTable.asm rename to Architecture/i386/Bootstrap/MB2PageTable.asm diff --git a/Architecture/i686/Bootstrap/Multiboot2.cpp b/Architecture/i386/Bootstrap/Multiboot2.cpp similarity index 100% rename from Architecture/i686/Bootstrap/Multiboot2.cpp rename to Architecture/i386/Bootstrap/Multiboot2.cpp diff --git a/Architecture/i686/Interrupts/8259PIC.cpp b/Architecture/i386/Interrupts/8259PIC.cpp similarity index 100% rename from Architecture/i686/Interrupts/8259PIC.cpp rename to Architecture/i386/Interrupts/8259PIC.cpp diff --git a/Architecture/i686/Interrupts/pic.hpp b/Architecture/i386/Interrupts/pic.hpp similarity index 100% rename from Architecture/i686/Interrupts/pic.hpp rename to Architecture/i386/Interrupts/pic.hpp diff --git a/Architecture/i686/SystemCalls.cpp b/Architecture/i386/SystemCalls.cpp similarity index 100% rename from Architecture/i686/SystemCalls.cpp rename to Architecture/i386/SystemCalls.cpp diff --git a/Architecture/i686/cpu/GlobalDescriptorTable.cpp b/Architecture/i386/cpu/GlobalDescriptorTable.cpp similarity index 100% rename from Architecture/i686/cpu/GlobalDescriptorTable.cpp rename to Architecture/i386/cpu/GlobalDescriptorTable.cpp diff --git a/Architecture/i686/cpu/SymmetricMultiprocessing.cpp b/Architecture/i386/cpu/SymmetricMultiprocessing.cpp similarity index 100% rename from Architecture/i686/cpu/SymmetricMultiprocessing.cpp rename to Architecture/i386/cpu/SymmetricMultiprocessing.cpp diff --git a/Architecture/i686/cpu/apic.hpp b/Architecture/i386/cpu/apic.hpp similarity index 100% rename from Architecture/i686/cpu/apic.hpp rename to Architecture/i386/cpu/apic.hpp diff --git a/Architecture/i686/cpu/gdt.hpp b/Architecture/i386/cpu/gdt.hpp similarity index 100% rename from Architecture/i686/cpu/gdt.hpp rename to Architecture/i386/cpu/gdt.hpp diff --git a/Architecture/i686/cpu/idt.hpp b/Architecture/i386/cpu/idt.hpp similarity index 100% rename from Architecture/i686/cpu/idt.hpp rename to Architecture/i386/cpu/idt.hpp diff --git a/Architecture/i686/linker.ld b/Architecture/i386/linker.ld similarity index 100% rename from Architecture/i686/linker.ld rename to Architecture/i386/linker.ld diff --git a/Architecture/i686/runtime/crt0.c b/Architecture/i386/runtime/crt0.c similarity index 100% rename from Architecture/i686/runtime/crt0.c rename to Architecture/i386/runtime/crt0.c diff --git a/Architecture/i686/runtime/crt1.c b/Architecture/i386/runtime/crt1.c similarity index 100% rename from Architecture/i686/runtime/crt1.c rename to Architecture/i386/runtime/crt1.c diff --git a/Architecture/i686/runtime/crtbegin.c b/Architecture/i386/runtime/crtbegin.c similarity index 100% rename from Architecture/i686/runtime/crtbegin.c rename to Architecture/i386/runtime/crtbegin.c diff --git a/Architecture/i686/runtime/crtend.c b/Architecture/i386/runtime/crtend.c similarity index 100% rename from Architecture/i686/runtime/crtend.c rename to Architecture/i386/runtime/crtend.c diff --git a/Architecture/i686/runtime/crti.S b/Architecture/i386/runtime/crti.S similarity index 100% rename from Architecture/i686/runtime/crti.S rename to Architecture/i386/runtime/crti.S diff --git a/Architecture/i686/runtime/crtn.S b/Architecture/i386/runtime/crtn.S similarity index 100% rename from Architecture/i686/runtime/crtn.S rename to Architecture/i386/runtime/crtn.S diff --git a/Core/Crash/CrashHandler.cpp b/Core/Crash/CrashHandler.cpp index e72b5f8..601da3b 100644 --- a/Core/Crash/CrashHandler.cpp +++ b/Core/Crash/CrashHandler.cpp @@ -17,8 +17,8 @@ #include "../../Architecture/amd64/cpu/gdt.hpp" #include "../Architecture/amd64/cpu/apic.hpp" #elif defined(a32) -#include "../../Architecture/i686/cpu/gdt.hpp" -#include "../Architecture/i686/cpu/apic.hpp" +#include "../../Architecture/i386/cpu/gdt.hpp" +#include "../Architecture/i386/cpu/apic.hpp" #elif defined(aa64) #endif diff --git a/Core/InterruptsManager.cpp b/Core/InterruptsManager.cpp index e10b096..5671422 100644 --- a/Core/InterruptsManager.cpp +++ b/Core/InterruptsManager.cpp @@ -11,8 +11,8 @@ #include "../Architecture/amd64/acpi.hpp" #include "../Architecture/amd64/cpu/apic.hpp" #elif defined(a32) -#include "../Architecture/i686/cpu/gdt.hpp" -#include "../Architecture/i686/cpu/idt.hpp" +#include "../Architecture/i386/cpu/gdt.hpp" +#include "../Architecture/i386/cpu/idt.hpp" #elif defined(aa64) #endif diff --git a/DAPI.hpp b/DAPI.hpp index 270d5b1..48896d5 100644 --- a/DAPI.hpp +++ b/DAPI.hpp @@ -372,7 +372,7 @@ union CPURegisters unsigned long rflags; unsigned long rsp; unsigned long ss; -#elif defined(__i386__) || defined(__i686__) +#elif defined(__i386__) unsigned int ebp; unsigned int edi; unsigned int esi; diff --git a/Fex.hpp b/Fex.hpp index fda0eaa..753d8b0 100644 --- a/Fex.hpp +++ b/Fex.hpp @@ -74,7 +74,7 @@ struct FexExtended char Name[64]; enum FexDriverType Type : 4; enum FexDriverInputTypes TypeFlags : 4; - bool OverrideOnConflict : 1; + char OverrideOnConflict : 1; int (*Callback)(union KernelCallback *); int (*InterruptCallback)(union CPURegisters *); diff --git a/Makefile b/Makefile index d32d48b..4cc2b3f 100644 --- a/Makefile +++ b/Makefile @@ -22,23 +22,23 @@ GIT_COMMIT_SHORT = $(shell git rev-parse --short HEAD) BMP_SOURCES = $(shell find ./ -type f -name '*.bmp') PSF_SOURCES = $(shell find ./ -type f -name '*.psf') ifeq ($(OSARCH), amd64) -ASM_SOURCES = $(shell find ./ -type f -name '*.asm' -not -path "./Architecture/i686/*" -not -path "./Architecture/aarch64/*") -S_SOURCES = $(shell find ./ -type f -name '*.S' -not -path "./Architecture/i686/*" -not -path "./Architecture/aarch64/*") -C_SOURCES = $(shell find ./ -type f -name '*.c' -not -path "./Architecture/i686/*" -not -path "./Architecture/aarch64/*") -CPP_SOURCES = $(shell find ./ -type f -name '*.cpp' -not -path "./Architecture/i686/*" -not -path "./Architecture/aarch64/*") -RS_SOURCES = $(shell find ./ -type f -name '*.rs' -not -path "./Architecture/i686/*" -not -path "./Architecture/aarch64/*") -else ifeq ($(OSARCH), i686) +ASM_SOURCES = $(shell find ./ -type f -name '*.asm' -not -path "./Architecture/i386/*" -not -path "./Architecture/aarch64/*") +S_SOURCES = $(shell find ./ -type f -name '*.S' -not -path "./Architecture/i386/*" -not -path "./Architecture/aarch64/*") +C_SOURCES = $(shell find ./ -type f -name '*.c' -not -path "./Architecture/i386/*" -not -path "./Architecture/aarch64/*") +CPP_SOURCES = $(shell find ./ -type f -name '*.cpp' -not -path "./Architecture/i386/*" -not -path "./Architecture/aarch64/*") +RS_SOURCES = $(shell find ./ -type f -name '*.rs' -not -path "./Architecture/i386/*" -not -path "./Architecture/aarch64/*") +else ifeq ($(OSARCH), i386) ASM_SOURCES = $(shell find ./ -type f -name '*.asm' -not -path "./Architecture/amd64/*" -not -path "./Architecture/aarch64/*") S_SOURCES = $(shell find ./ -type f -name '*.S' -not -path "./Architecture/amd64/*" -not -path "./Architecture/aarch64/*") C_SOURCES = $(shell find ./ -type f -name '*.c' -not -path "./Architecture/amd64/*" -not -path "./Architecture/aarch64/*") CPP_SOURCES = $(shell find ./ -type f -name '*.cpp' -not -path "./Architecture/amd64/*" -not -path "./Architecture/aarch64/*") RS_SOURCES = $(shell find ./ -type f -name '*.rs' -not -path "./Architecture/amd64/*" -not -path "./Architecture/aarch64/*") else ifeq ($(OSARCH), aarch64) -ASM_SOURCES = $(shell find ./ -type f -name '*.asm' -not -path "./Architecture/amd64/*" -not -path "./Architecture/i686/*") -S_SOURCES = $(shell find ./ -type f -name '*.S' -not -path "./Architecture/amd64/*" -not -path "./Architecture/i686/*") -C_SOURCES = $(shell find ./ -type f -name '*.c' -not -path "./Architecture/amd64/*" -not -path "./Architecture/i686/*") -CPP_SOURCES = $(shell find ./ -type f -name '*.cpp' -not -path "./Architecture/amd64/*" -not -path "./Architecture/i686/*") -RS_SOURCES = $(shell find ./ -type f -name '*.rs' -not -path "./Architecture/amd64/*" -not -path "./Architecture/i686/*") +ASM_SOURCES = $(shell find ./ -type f -name '*.asm' -not -path "./Architecture/amd64/*" -not -path "./Architecture/i386/*") +S_SOURCES = $(shell find ./ -type f -name '*.S' -not -path "./Architecture/amd64/*" -not -path "./Architecture/i386/*") +C_SOURCES = $(shell find ./ -type f -name '*.c' -not -path "./Architecture/amd64/*" -not -path "./Architecture/i386/*") +CPP_SOURCES = $(shell find ./ -type f -name '*.cpp' -not -path "./Architecture/amd64/*" -not -path "./Architecture/i386/*") +RS_SOURCES = $(shell find ./ -type f -name '*.rs' -not -path "./Architecture/amd64/*" -not -path "./Architecture/i386/*") endif HEADERS = $(sort $(dir $(wildcard ./include/*))) OBJ = $(C_SOURCES:.c=.o) $(CPP_SOURCES:.cpp=.o) $(RS_SOURCES:.rs=.o) $(ASM_SOURCES:.asm=.o) $(S_SOURCES:.S=.o) $(PSF_SOURCES:.psf=.o) $(BMP_SOURCES:.bmp=.o) @@ -77,13 +77,13 @@ LDFLAGS += -TArchitecture/amd64/linker.ld \ -zmax-page-size=0x1000 \ -Wl,-Map kernel.map -shared -else ifeq ($(OSARCH), i686) +else ifeq ($(OSARCH), i386) CFLAGS += -fno-pic -fno-pie -mno-80387 -mno-mmx -mno-3dnow \ -mno-red-zone -march=pentium -pipe -msoft-float \ -fno-builtin -Da32 CFLAG_STACK_PROTECTOR := -fstack-protector-all -LDFLAGS += -TArchitecture/i686/linker.ld \ +LDFLAGS += -TArchitecture/i386/linker.ld \ -fno-pic -fno-pie \ -Wl,-static,--no-dynamic-linker,-ztext \ -nostdlib -nodefaultlibs -nolibc \ @@ -100,7 +100,7 @@ endif ifeq ($(OSARCH), amd64) NASMFLAGS := -f elf64 -else ifeq ($(OSARCH), i686) +else ifeq ($(OSARCH), i386) NASMFLAGS := -f elf32 else ifeq ($(OSARCH), aarch64) NASMFLAGS := @@ -162,7 +162,7 @@ $(KERNEL_FILENAME): $(OBJ) $(info Compiling $<) ifeq ($(OSARCH), amd64) $(AS) -c $< -o $@ -else ifeq ($(OSARCH), i686) +else ifeq ($(OSARCH), i386) $(AS) -c $< -o $@ else ifeq ($(OSARCH), aarch64) $(AS) -c $< -o $@ @@ -171,7 +171,7 @@ endif %.o: %.psf ifeq ($(OSARCH), amd64) $(OBJCOPY) -O elf64-x86-64 -I binary $< $@ -else ifeq ($(OSARCH), i686) +else ifeq ($(OSARCH), i386) $(OBJCOPY) -O elf32-i386 -I binary $< $@ else ifeq ($(OSARCH), aarch64) $(OBJCOPY) -O elf64-littleaarch64 -I binary $< $@ @@ -181,7 +181,7 @@ endif %.o: %.bmp ifeq ($(OSARCH), amd64) $(OBJCOPY) -O elf64-x86-64 -I binary $< $@ -else ifeq ($(OSARCH), i686) +else ifeq ($(OSARCH), i386) $(OBJCOPY) -O elf32-i386 -I binary $< $@ else ifeq ($(OSARCH), aarch64) $(OBJCOPY) -O elf64-littlearch64 -I binary $< $@ diff --git a/Tasking/Scheduler.cpp b/Tasking/Scheduler.cpp index 31b894d..3b7dd2d 100644 --- a/Tasking/Scheduler.cpp +++ b/Tasking/Scheduler.cpp @@ -13,7 +13,7 @@ #include "../Architecture/amd64/cpu/apic.hpp" #include "../Architecture/amd64/cpu/gdt.hpp" #elif defined(a32) -#include "../Architecture/i686/cpu/apic.hpp" +#include "../Architecture/i386/cpu/apic.hpp" #elif defined(aa64) #endif diff --git a/Tasking/Task.cpp b/Tasking/Task.cpp index c5adc3b..f2b265d 100644 --- a/Tasking/Task.cpp +++ b/Tasking/Task.cpp @@ -13,7 +13,7 @@ #include "../Architecture/amd64/cpu/apic.hpp" #include "../Architecture/amd64/cpu/gdt.hpp" #elif defined(a32) -#include "../Architecture/i686/cpu/apic.hpp" +#include "../Architecture/i386/cpu/apic.hpp" #elif defined(aa64) #endif