diff --git a/.ccls b/.ccls index 560a40b..e478195 100644 --- a/.ccls +++ b/.ccls @@ -1,4 +1,5 @@ clang %c -std=c99 %c -isystem./src/kernel/ -%c -fno-builtin \ No newline at end of file +%c -fno-builtin +%c -D__I686 \ No newline at end of file diff --git a/src/kernel/Makefile b/src/kernel/Makefile index 89f85e8..91eff43 100644 --- a/src/kernel/Makefile +++ b/src/kernel/Makefile @@ -1,5 +1,5 @@ TARGET_ASMFLAGS += -f elf -TARGET_CFLAGS += -ffreestanding -nostdlib -I. +TARGET_CFLAGS += -ffreestanding -nostdlib -I. -D__I686 TARGET_LIBS += -lgcc TARGET_LINKFLAGS += -T linker.ld -nostdlib diff --git a/src/kernel/arch/i686/cpuid.asm b/src/kernel/arch/i686/cpuid.asm index 07e4e9e..839a899 100644 --- a/src/kernel/arch/i686/cpuid.asm +++ b/src/kernel/arch/i686/cpuid.asm @@ -2,4 +2,20 @@ ;Nanite OS ; ;COPYRIGHT (C) 2026 ; ;Xircon ; -;/////////////////////; \ No newline at end of file +;/////////////////////; + +global CPUID_Check_Supported +CPUID_Check_Supported: + pushfd ;Save EFLAGS + pushfd ;Store EFLAGS + xor dword [esp],0x00200000 ;Invert the ID bit in stored EFLAGS + popfd ;Load stored EFLAGS (with ID bit inverted) + pushfd ;Store EFLAGS again (ID bit may or may not be inverted) + pop eax ;eax = modified EFLAGS (ID bit may or may not be inverted) + xor eax,[esp] ;eax = whichever bits were changed + popfd ;Restore original EFLAGS + and eax,0x00200000 ;eax = zero if ID bit can't be changed, else non-zero + ret + +global CPUID_Gather_Info +CPUID_Gather_Info: diff --git a/src/kernel/arch/i686/cpuid.c b/src/kernel/arch/i686/cpuid.c new file mode 100644 index 0000000..e6d62bc --- /dev/null +++ b/src/kernel/arch/i686/cpuid.c @@ -0,0 +1,23 @@ +/*----------------*\ +|Nanite OS | +|Copyright (C) 2026| +|Xircon | +\*----------------*/ +#ifdef __I686 +#include "cpuid.h" + +#include + +char CPUID_Get_Vendor() { + uint32_t eax, ebx, ecx, edx; + eax = 0x00; + ecx = 0x0; + __asm__ volatile ( + "cpuid" + : "=a"(eax), "=b"(ebx), "=c"(ecx), "=d"(edx) + : "a"(eax), "c"(ecx) + ); + char returnme = ebx+ecx+edx; + return ebx; +} +#endif \ No newline at end of file diff --git a/src/kernel/arch/i686/cpuid.h b/src/kernel/arch/i686/cpuid.h index 260b455..4e9e205 100644 --- a/src/kernel/arch/i686/cpuid.h +++ b/src/kernel/arch/i686/cpuid.h @@ -2,4 +2,116 @@ |Nanite OS | |Copyright (C) 2026| |Xircon | -\*----------------*/ \ No newline at end of file +\*----------------*/ +#ifdef __I686 +#pragma once + +#include + +// Vendor strings from CPUs. +#define CPUID_VENDOR_AMD "AuthenticAMD" +#define CPUID_VENDOR_AMD_OLD "AMDisbetter!" // Early engineering samples of AMD K5 processor +#define CPUID_VENDOR_INTEL "GenuineIntel" +#define CPUID_VENDOR_VIA "VIA VIA VIA " +#define CPUID_VENDOR_TRANSMETA "GenuineTMx86" +#define CPUID_VENDOR_TRANSMETA_OLD "TransmetaCPU" +#define CPUID_VENDOR_CYRIX "CyrixInstead" +#define CPUID_VENDOR_CENTAUR "CentaurHauls" +#define CPUID_VENDOR_NEXGEN "NexGenDriven" +#define CPUID_VENDOR_UMC "UMC UMC UMC " +#define CPUID_VENDOR_SIS "SiS SiS SiS " +#define CPUID_VENDOR_NSC "Geode by NSC" +#define CPUID_VENDOR_RISE "RiseRiseRise" +#define CPUID_VENDOR_VORTEX "Vortex86 SoC" +#define CPUID_VENDOR_AO486 "MiSTer AO486" +#define CPUID_VENDOR_AO486_OLD "GenuineAO486" +#define CPUID_VENDOR_ZHAOXIN " Shanghai " +#define CPUID_VENDOR_HYGON "HygonGenuine" +#define CPUID_VENDOR_ELBRUS "E2K MACHINE " + +// Vendor strings from hypervisors. +#define CPUID_VENDOR_QEMU "TCGTCGTCGTCG" +#define CPUID_VENDOR_KVM " KVMKVMKVM " +#define CPUID_VENDOR_VMWARE "VMwareVMware" +#define CPUID_VENDOR_VIRTUALBOX "VBoxVBoxVBox" +#define CPUID_VENDOR_XEN "XenVMMXenVMM" +#define CPUID_VENDOR_HYPERV "Microsoft Hv" +#define CPUID_VENDOR_PARALLELS " prl hyperv " +#define CPUID_VENDOR_PARALLELS_ALT " lrpepyh vr " // Sometimes Parallels incorrectly encodes "prl hyperv" as "lrpepyh vr" due to an endianness mismatch. +#define CPUID_VENDOR_BHYVE "bhyve bhyve " +#define CPUID_VENDOR_QNX " QNXQVMBSQG " + +extern int CPUID_Check_Supported(); +extern char CPUID_Get_Vendor(); + + +enum { + CPUID_FEAT_EBX_BRAND_INDEX = 0xFF << 0, + CPUID_FEAT_EBX_CLFLUSH_LINE_SIZE = 0xFF << 8, + CPUID_FEAT_EBX_APIC_ID_SPACE = 0xFF << 16, + CPUID_FEAT_EBX_INITIAL_APIC_ID = 0xFF << 24, + + CPUID_FEAT_ECX_SSE3 = 1 << 0, + CPUID_FEAT_ECX_PCLMUL = 1 << 1, + CPUID_FEAT_ECX_DTES64 = 1 << 2, + CPUID_FEAT_ECX_MONITOR = 1 << 3, + CPUID_FEAT_ECX_DS_CPL = 1 << 4, + CPUID_FEAT_ECX_VMX = 1 << 5, + CPUID_FEAT_ECX_SMX = 1 << 6, + CPUID_FEAT_ECX_EST = 1 << 7, + CPUID_FEAT_ECX_TM2 = 1 << 8, + CPUID_FEAT_ECX_SSSE3 = 1 << 9, + CPUID_FEAT_ECX_CID = 1 << 10, + CPUID_FEAT_ECX_SDBG = 1 << 11, + CPUID_FEAT_ECX_FMA = 1 << 12, + CPUID_FEAT_ECX_CX16 = 1 << 13, + CPUID_FEAT_ECX_XTPR = 1 << 14, + CPUID_FEAT_ECX_PDCM = 1 << 15, + CPUID_FEAT_ECX_PCID = 1 << 17, + CPUID_FEAT_ECX_DCA = 1 << 18, + CPUID_FEAT_ECX_SSE4_1 = 1 << 19, + CPUID_FEAT_ECX_SSE4_2 = 1 << 20, + CPUID_FEAT_ECX_X2APIC = 1 << 21, + CPUID_FEAT_ECX_MOVBE = 1 << 22, + CPUID_FEAT_ECX_POPCNT = 1 << 23, + CPUID_FEAT_ECX_TSC = 1 << 24, + CPUID_FEAT_ECX_AES = 1 << 25, + CPUID_FEAT_ECX_XSAVE = 1 << 26, + CPUID_FEAT_ECX_OSXSAVE = 1 << 27, + CPUID_FEAT_ECX_AVX = 1 << 28, + CPUID_FEAT_ECX_F16C = 1 << 29, + CPUID_FEAT_ECX_RDRAND = 1 << 30, + CPUID_FEAT_ECX_HYPERVISOR = 1 << 31, + + CPUID_FEAT_EDX_FPU = 1 << 0, + CPUID_FEAT_EDX_VME = 1 << 1, + CPUID_FEAT_EDX_DE = 1 << 2, + CPUID_FEAT_EDX_PSE = 1 << 3, + CPUID_FEAT_EDX_TSC = 1 << 4, + CPUID_FEAT_EDX_MSR = 1 << 5, + CPUID_FEAT_EDX_PAE = 1 << 6, + CPUID_FEAT_EDX_MCE = 1 << 7, + CPUID_FEAT_EDX_CX8 = 1 << 8, + CPUID_FEAT_EDX_APIC = 1 << 9, + CPUID_FEAT_EDX_SEP = 1 << 11, + CPUID_FEAT_EDX_MTRR = 1 << 12, + CPUID_FEAT_EDX_PGE = 1 << 13, + CPUID_FEAT_EDX_MCA = 1 << 14, + CPUID_FEAT_EDX_CMOV = 1 << 15, + CPUID_FEAT_EDX_PAT = 1 << 16, + CPUID_FEAT_EDX_PSE36 = 1 << 17, + CPUID_FEAT_EDX_PSN = 1 << 18, + CPUID_FEAT_EDX_CLFLUSH = 1 << 19, + CPUID_FEAT_EDX_DS = 1 << 21, + CPUID_FEAT_EDX_ACPI = 1 << 22, + CPUID_FEAT_EDX_MMX = 1 << 23, + CPUID_FEAT_EDX_FXSR = 1 << 24, + CPUID_FEAT_EDX_SSE = 1 << 25, + CPUID_FEAT_EDX_SSE2 = 1 << 26, + CPUID_FEAT_EDX_SS = 1 << 27, + CPUID_FEAT_EDX_HTT = 1 << 28, + CPUID_FEAT_EDX_TM = 1 << 29, + CPUID_FEAT_EDX_IA64 = 1 << 30, + CPUID_FEAT_EDX_PBE = 1 << 31 +}; +#endif \ No newline at end of file diff --git a/src/kernel/arch/i686/gdt.c b/src/kernel/arch/i686/gdt.c index 3e60ad4..0d7a0f7 100644 --- a/src/kernel/arch/i686/gdt.c +++ b/src/kernel/arch/i686/gdt.c @@ -3,6 +3,7 @@ |Copyright (C) 2026| |Xircon | \*----------------*/ +#ifdef __I686 #include "gdt.h" #include @@ -89,4 +90,5 @@ void __attribute__((cdecl)) GDT_Load(GDTDescriptor* descriptor, uint16_t codeSeg void GDT_Initialize() { GDT_Load(&g_GDTDescriptor, GDT_CODE_SEGMENT, GDT_DATA_SEGMENT); -} \ No newline at end of file +} +#endif \ No newline at end of file diff --git a/src/kernel/arch/i686/gdt.h b/src/kernel/arch/i686/gdt.h index 74ddbc4..6e7d9bd 100644 --- a/src/kernel/arch/i686/gdt.h +++ b/src/kernel/arch/i686/gdt.h @@ -3,9 +3,11 @@ |Copyright (C) 2026| |Xircon | \*----------------*/ +#ifdef __I686 #pragma once #define GDT_CODE_SEGMENT 0x8 #define GDT_DATA_SEGMENT 0x10 -void GDT_Initialize(); \ No newline at end of file +void GDT_Initialize(); +#endif \ No newline at end of file diff --git a/src/kernel/arch/i686/gen_isr.c b/src/kernel/arch/i686/gen_isr.c index dc1a065..e9908f4 100644 --- a/src/kernel/arch/i686/gen_isr.c +++ b/src/kernel/arch/i686/gen_isr.c @@ -1,4 +1,5 @@ // THIS FILE IS AUTOGENERATED VIA genISR.sh, because im pacient but not THAT pacient good lord its 500 lines of pure hell also like i have no braincells left... +#ifdef __I686 #include "idt.h" #include "gdt.h" @@ -518,3 +519,4 @@ void ISR_InitializeGates() IDT_SetGate(254, ISR254, GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); IDT_SetGate(255, ISR255, GDT_CODE_SEGMENT, IDT_FLAG_RING0 | IDT_FLAG_GATE_32BIT_INT); } +#endif \ No newline at end of file diff --git a/src/kernel/arch/i686/idt.c b/src/kernel/arch/i686/idt.c index d5ab2ef..97afa80 100644 --- a/src/kernel/arch/i686/idt.c +++ b/src/kernel/arch/i686/idt.c @@ -3,6 +3,7 @@ |Copyright (C) 2026| |Xircon | \*----------------*/ +#ifdef __I686 #include "idt.h" #include #include @@ -47,4 +48,4 @@ void IDT_DisableGate(int interupt) { void IDT_Initialize() { IDT_Load(&g_IDTDescriptor); } - +#endif diff --git a/src/kernel/arch/i686/idt.h b/src/kernel/arch/i686/idt.h index f679fc8..75cb0ae 100644 --- a/src/kernel/arch/i686/idt.h +++ b/src/kernel/arch/i686/idt.h @@ -3,6 +3,7 @@ |Copyright (C) 2026| |Xircon | \*----------------*/ +#ifdef __I686 #pragma once #include @@ -26,4 +27,5 @@ typedef enum { IDT_FLAG_PRESENT = 0x80, -} IDT_FLAGS; \ No newline at end of file +} IDT_FLAGS; +#endif \ No newline at end of file diff --git a/src/kernel/arch/i686/io.c b/src/kernel/arch/i686/io.c index 826a032..c8963b8 100644 --- a/src/kernel/arch/i686/io.c +++ b/src/kernel/arch/i686/io.c @@ -3,6 +3,7 @@ |Copyright (C) 2026| |Xircon | \*----------------*/ +#ifdef __I686 #include "io.h" #define UNUSED_PORT 0x80 @@ -10,4 +11,5 @@ void iowait() { outb(UNUSED_PORT, 0); -} \ No newline at end of file +} +#endif \ No newline at end of file diff --git a/src/kernel/arch/i686/io.h b/src/kernel/arch/i686/io.h index 521042c..ef35a4d 100644 --- a/src/kernel/arch/i686/io.h +++ b/src/kernel/arch/i686/io.h @@ -3,6 +3,7 @@ |Copyright (C) 2026| |Xircon | \*----------------*/ +#ifdef __I686 #pragma once #include #include @@ -14,3 +15,4 @@ uint8_t __attribute__((cdecl)) DisableInterrupts(); void iowait(); void __attribute__((cdecl)) kernel_panic(); +#endif \ No newline at end of file diff --git a/src/kernel/arch/i686/irq.c b/src/kernel/arch/i686/irq.c index 0632769..0910cc4 100644 --- a/src/kernel/arch/i686/irq.c +++ b/src/kernel/arch/i686/irq.c @@ -3,6 +3,7 @@ |Copyright (C) 2026| |Xircon | \*----------------*/ +#ifdef __I686 #include "irq.h" #include "pic.h" #include "io.h" @@ -48,4 +49,5 @@ void IRQ_Initialize() void IRQ_RegisterHandler(int irq, IRQHandler handler) { g_IRQHandlers[irq] = handler; -} \ No newline at end of file +} +#endif \ No newline at end of file diff --git a/src/kernel/arch/i686/irq.h b/src/kernel/arch/i686/irq.h index abd912e..78e8366 100644 --- a/src/kernel/arch/i686/irq.h +++ b/src/kernel/arch/i686/irq.h @@ -3,10 +3,12 @@ |Copyright (C) 2026| |Xircon | \*----------------*/ +#ifdef __I686 #pragma once #include "isr.h" typedef void (*IRQHandler)(Registers* regs); void IRQ_Initialize(); -void IRQ_RegisterHandler(int irq, IRQHandler handler); \ No newline at end of file +void IRQ_RegisterHandler(int irq, IRQHandler handler); +#endif \ No newline at end of file diff --git a/src/kernel/arch/i686/isr.c b/src/kernel/arch/i686/isr.c index f073f01..d2c6223 100644 --- a/src/kernel/arch/i686/isr.c +++ b/src/kernel/arch/i686/isr.c @@ -3,6 +3,7 @@ |Copyright (C) 2026| |Xircon | \*----------------*/ +#ifdef __I686 #include "isr.h" #include "idt.h" #include "gdt.h" @@ -76,7 +77,7 @@ void __attribute__((cdecl)) ISR_Handler(Registers* regs) { printf(" EAX=%x EBX=%x ECX=%x EDX=%x ESI=%x EDI=%x\n", regs->eax, regs->ebx, regs->ecx, regs->edx, regs->esi, regs->edi); printf(" ESP=%x EBP=%x EIP=%x EFLAGS=%x CS=%x DS=%x SS=%x\n", regs->esp, regs->ebp, regs->eip, regs->eflags, regs->cs, regs->ds, regs->ss); printf(" INTERRUPT=%x ERRORCODE=%x\n", regs->interrupt, regs->error); - printf("KERNEL PANIC!\n"); + printf("KERNEL PANIC!\nWell Fuck!\n"); kernel_panic(); } @@ -85,4 +86,5 @@ void ISR_RegisterHandler(int interrupt, ISRHandler handler) { g_ISRHandlers[interrupt] = handler; IDT_EnableGate(interrupt); -} \ No newline at end of file +} +#endif \ No newline at end of file diff --git a/src/kernel/arch/i686/isr.h b/src/kernel/arch/i686/isr.h index ceecac7..c14a1ce 100644 --- a/src/kernel/arch/i686/isr.h +++ b/src/kernel/arch/i686/isr.h @@ -3,6 +3,7 @@ |Copyright (C) 2026| |Xircon | \*----------------*/ +#ifdef __I686 #pragma once #include @@ -19,4 +20,5 @@ typedef struct typedef void (*ISRHandler)(Registers* regs); void ISR_Initialize(); -void ISR_RegisterHandler(int interrupt, ISRHandler handler); \ No newline at end of file +void ISR_RegisterHandler(int interrupt, ISRHandler handler); +#endif \ No newline at end of file diff --git a/src/kernel/arch/i686/pic.c b/src/kernel/arch/i686/pic.c index 22c132e..7fed7bb 100644 --- a/src/kernel/arch/i686/pic.c +++ b/src/kernel/arch/i686/pic.c @@ -3,6 +3,7 @@ |Copyright (C) 2026| |Xircon | \*----------------*/ +#ifdef __I686 #include "pic.h" #include "io.h" @@ -128,4 +129,5 @@ uint16_t PIC_ReadInServiceRegister() outb(PIC1_COMMAND_PORT, PIC_CMD_READ_ISR); outb(PIC2_COMMAND_PORT, PIC_CMD_READ_ISR); return inb(PIC2_COMMAND_PORT) | (inb(PIC2_COMMAND_PORT) << 8); -} \ No newline at end of file +} +#endif \ No newline at end of file diff --git a/src/kernel/arch/i686/pic.h b/src/kernel/arch/i686/pic.h index efbdc2f..6b62dd2 100644 --- a/src/kernel/arch/i686/pic.h +++ b/src/kernel/arch/i686/pic.h @@ -3,6 +3,7 @@ |Copyright (C) 2026| |Xircon | \*----------------*/ +#ifdef __I686 #pragma once #include @@ -12,4 +13,5 @@ void PIC_Disable(); void PIC_Mask(int irq); void PIC_Unmask(int irq); uint16_t PIC_ReadIRQRequestRegister(); -uint16_t PIC_ReadInServiceRegister(); \ No newline at end of file +uint16_t PIC_ReadInServiceRegister(); +#endif \ No newline at end of file diff --git a/src/kernel/arch/i686/util.h b/src/kernel/arch/i686/util.h index b057864..4dc73f3 100644 --- a/src/kernel/arch/i686/util.h +++ b/src/kernel/arch/i686/util.h @@ -3,6 +3,7 @@ |Copyright (C) 2026| |Xircon | \*----------------*/ +#ifdef __I686 #pragma once #include @@ -12,3 +13,4 @@ uint32_t __attribute__((cdecl)) Read_CR0(); void __attribute__((cdecl)) Write_CR0(uint32_t value); uint32_t* __attribute__((cdecl)) Read_CR3(); void __attribute__((cdecl)) Write_CR3(uint32_t* value); +#endif \ No newline at end of file diff --git a/src/kernel/core/dma/dma.c b/src/kernel/core/dma/dma.c index 5cf50d5..b362d1f 100644 --- a/src/kernel/core/dma/dma.c +++ b/src/kernel/core/dma/dma.c @@ -5,7 +5,10 @@ \*----------------*/ #include "dma.h" +#ifdef __I686 #include +#endif + #include #include diff --git a/src/kernel/core/hal/hal.c b/src/kernel/core/hal/hal.c index fe55b55..d9f869f 100644 --- a/src/kernel/core/hal/hal.c +++ b/src/kernel/core/hal/hal.c @@ -4,10 +4,14 @@ |Xircon | \*----------------*/ #include "hal.h" + +#ifdef __I686 #include #include #include #include +#endif + #include void HAL_Initialize() { diff --git a/src/kernel/core/memory/page.c b/src/kernel/core/memory/page.c index 61bb03f..c0efa30 100644 --- a/src/kernel/core/memory/page.c +++ b/src/kernel/core/memory/page.c @@ -5,10 +5,14 @@ \*----------------*/ #include "page.h" +// Arch stuff +#ifdef __I686 +#include +#endif + #include #include #include -#include extern uint16_t DEBUG_COM_PORT; diff --git a/src/kernel/dri/cmos.c b/src/kernel/dri/cmos.c index bb5e816..ba80ed9 100644 --- a/src/kernel/dri/cmos.c +++ b/src/kernel/dri/cmos.c @@ -5,11 +5,14 @@ \*----------------*/ #include "cmos.h" -#include -#include - +// Arch Specific +#ifdef __I686 #include #include +#endif + +#include +#include #include diff --git a/src/kernel/dri/disk/floppy.c b/src/kernel/dri/disk/floppy.c index 7629d56..aab47dc 100644 --- a/src/kernel/dri/disk/floppy.c +++ b/src/kernel/dri/disk/floppy.c @@ -5,11 +5,15 @@ \*----------------*/ #include "floppy.h" +// Arch specific stuff +#ifdef __I686 +#include +#include +#endif + #include #include #include -#include -#include #include #include diff --git a/src/kernel/dri/fat.c b/src/kernel/dri/fs/fat.c similarity index 100% rename from src/kernel/dri/fat.c rename to src/kernel/dri/fs/fat.c diff --git a/src/kernel/dri/fat.h b/src/kernel/dri/fs/fat.h similarity index 100% rename from src/kernel/dri/fat.h rename to src/kernel/dri/fs/fat.h diff --git a/src/kernel/dri/keyboard.c b/src/kernel/dri/keyboard.c index a1ec955..3b09391 100644 --- a/src/kernel/dri/keyboard.c +++ b/src/kernel/dri/keyboard.c @@ -5,11 +5,15 @@ \*----------------*/ #include "keyboard.h" -#include -#include +// Arch Specific +#ifdef __I686 #include #include #include +#endif + +#include +#include #include #include @@ -34,7 +38,7 @@ void Keyboard_Handler() if(_keyboard_scancode == 42) _shift = true; if(_keyboard_scancode == 170) _shift = false; - // If CTRL+ALT+DEL Reboot + // Three finger salute (lol) if(_keyboard_scancode == 224 && _ctrl == true && _alt == true) Reboot(); // If CTRL+ALT+ESC Shut Down if(_keyboard_scancode == 1 && _ctrl == true && _alt == true); // Shutdown(); diff --git a/src/kernel/dri/serial.c b/src/kernel/dri/serial.c index ddccefe..56585c2 100644 --- a/src/kernel/dri/serial.c +++ b/src/kernel/dri/serial.c @@ -5,10 +5,14 @@ \*----------------*/ #include "serial.h" +// Arch Specific +#ifdef __I686 +#include +#endif + #include #include #include -#include char Serial_Read_Buffer; char Serial_Write_Buffer; diff --git a/src/kernel/dri/sound/pcspeaker.c b/src/kernel/dri/sound/pcspeaker.c index 99f4977..f681c39 100644 --- a/src/kernel/dri/sound/pcspeaker.c +++ b/src/kernel/dri/sound/pcspeaker.c @@ -5,12 +5,15 @@ \*----------------*/ #include "pcspeaker.h" +// Arch Specific Stuff +#ifdef __I686 +#include +#endif + #include #include -#include - #include #include #include diff --git a/src/kernel/main.c b/src/kernel/main.c index f6465fb..d3af891 100644 --- a/src/kernel/main.c +++ b/src/kernel/main.c @@ -6,9 +6,12 @@ // Architecture specific +#ifdef __I686 #include #include #include +#include +#endif // stdlibs @@ -75,7 +78,7 @@ void start() { // Storage // Floppy_Init(); // This should always be last; its slow as fuck printf("Done!\n"); - + // Serial_Printf(DEBUG_COM_PORT, "CPU Vendor: %s\n", CPUID_Get_Vendor()); // CPUID Stuff is pain and suffering, like page faults pain and suffering printf("Initializing Memory Paging..."); Memory = Detect_Memory(); Serial_Printf(DEBUG_COM_PORT, "MEMORY:> There is %dKB of Memory Available\n", Memory); diff --git a/src/kernel/stdio.c b/src/kernel/stdio.c index 9b3b959..09dbfaa 100644 --- a/src/kernel/stdio.c +++ b/src/kernel/stdio.c @@ -3,8 +3,12 @@ |Copyright (C) 2026| |Xircon | \*----------------*/ -#include +// Arch Specific +#ifdef __I686 #include +#endif + +#include #include #include