From db1f693d9c963c5364465aef454d11db689a6740 Mon Sep 17 00:00:00 2001 From: Rafal Kupiec Date: Wed, 29 Nov 2023 15:57:09 +0100 Subject: [PATCH 1/4] Corrections to UEFI_FIRMWARE_INFORMATION and KERNEL_INITIALIZATION_BLOCK --- sdk/xtdk/xtfw.h | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/sdk/xtdk/xtfw.h b/sdk/xtdk/xtfw.h index e7b4578..613e2ab 100644 --- a/sdk/xtdk/xtfw.h +++ b/sdk/xtdk/xtfw.h @@ -61,6 +61,11 @@ typedef enum _SYSTEM_FIRMWARE_TYPE SystemFirmwarePcat } SYSTEM_FIRMWARE_TYPE, *PSYSTEM_FIRMWARE_TYPE; +/* Hardware information block */ +typedef struct _HARDWARE_INFORMATION_BLOCK +{ +} HARDWARE_INFORMATION_BLOCK, *PHARDWARE_INFORMATION_BLOCK; + /* PCAT Firmware information block */ typedef struct _PCAT_FIRMWARE_INFORMATION { @@ -71,7 +76,7 @@ typedef struct _PCAT_FIRMWARE_INFORMATION typedef struct _UEFI_FIRMWARE_INFORMATION { ULONG EfiVersion; - PVOID EfiRuntimeServices; + PEFI_RUNTIME_SERVICES EfiRuntimeServices; } UEFI_FIRMWARE_INFORMATION, *PUEFI_FIRMWARE_INFORMATION; /* Firmware information block */ @@ -121,9 +126,11 @@ typedef struct _KERNEL_INITIALIZATION_BLOCK ULONG BlockSize; ULONG BlockVersion; ULONG ProtocolVersion; + PCHAR KernelParameters; LIST_ENTRY LoadOrderListHead; LIST_ENTRY MemoryDescriptorListHead; LIST_ENTRY BootDriverListHead; + HARDWARE_INFORMATION_BLOCK HardwareInformation; LOADER_INFORMATION_BLOCK LoaderInformation; FIRMWARE_INFORMATION_BLOCK FirmwareInformation; } KERNEL_INITIALIZATION_BLOCK, *PKERNEL_INITIALIZATION_BLOCK; From 7a60f46f24327f227aa1b7866c835c224015eeb2 Mon Sep 17 00:00:00 2001 From: Rafal Kupiec Date: Wed, 29 Nov 2023 16:12:55 +0100 Subject: [PATCH 2/4] Add preprocessor macro for including common headers and source files across different architectures --- sdk/xtdk/xttarget.h | 3 +++ 1 file changed, 3 insertions(+) diff --git a/sdk/xtdk/xttarget.h b/sdk/xtdk/xttarget.h index 3b3de0e..877c74c 100644 --- a/sdk/xtdk/xttarget.h +++ b/sdk/xtdk/xttarget.h @@ -13,12 +13,14 @@ /* Preprocessor macros for including arch-specific headers */ #define _ARCH_STRINGIZE(x) _INCL_STRINGIZE(x) #define _INCL_STRINGIZE(x) #x +#define ARCH_COMMON(header) _ARCH_STRINGIZE(../_ARCH_COMMON/header) #define ARCH_HEADER(header) _ARCH_STRINGIZE(_ARCH/header) /* Architecture specific definitions */ #if defined(__i386__) || defined(__i686__) #define _ARCH i686 #define _ARCH_I686 1 + #define _ARCH_COMMON x86 #define _ARCH_NAME "32-bit x86" #define _ARCH_IMAGE_MACHINE_TYPE 0x014C #define _XT32 1 @@ -31,6 +33,7 @@ #elif defined(__amd64__) || defined(__x86_64__) #define _ARCH amd64 #define _ARCH_AMD64 1 + #define _ARCH_COMMON x86 #define _ARCH_NAME "64-bit x86" #define _ARCH_IMAGE_MACHINE_TYPE 0x8664 #define _XT64 1 From a90a30ff7a792e64cad59342fb3fa33248804792 Mon Sep 17 00:00:00 2001 From: Rafal Kupiec Date: Wed, 29 Nov 2023 17:59:53 +0100 Subject: [PATCH 3/4] Move XTOS GUIDs into separate header --- sdk/xtdk/xtguid.h | 30 ++++++++++++++++++++++++++++++ sdk/xtdk/xtkmapi.h | 1 + xtldr/includes/bldefs.h | 13 ------------- 3 files changed, 31 insertions(+), 13 deletions(-) create mode 100644 sdk/xtdk/xtguid.h diff --git a/sdk/xtdk/xtguid.h b/sdk/xtdk/xtguid.h new file mode 100644 index 0000000..b5a2455 --- /dev/null +++ b/sdk/xtdk/xtguid.h @@ -0,0 +1,30 @@ +/** + * PROJECT: ExectOS + * COPYRIGHT: See COPYING.md in the top level directory + * FILE: sdk/xtdk/xtguid.h + * DESCRIPTION: XTOS Globally Unique Identifiers + * DEVELOPERS: Rafal Kupiec + */ + +#ifndef __XTDK_XTGUID_H +#define __XTDK_XTGUID_H + + +/* EFI XT protocols GUIDs */ +#define XT_BOOT_LOADER_PROTOCOL_GUID {0x58544F53, 0x5854, 0x4357, {0x00, 0x42, 0x4F, 0x4F, 0x54, 0x4C, 0x50, 0x54}} +#define XT_ELF_IMAGE_PROTOCOL_GUID {0x58544F53, 0x5854, 0x4357, {0x45, 0x4C, 0x46, 0x49, 0x4D, 0x47, 0x50, 0x54}} +#define XT_FRAMEBUFFER_PROTOCOL_GUID {0x58544F53, 0x5854, 0x4357, {0x00, 0x00, 0x46, 0x42, 0x55, 0x46, 0x50, 0x54}} +#define XT_HIVE_IMAGE_PROTOCOL_GUID {0x58544F53, 0x5854, 0x4357, {0x48, 0x49, 0x56, 0x49, 0x4D, 0x47, 0x50, 0x54}} +#define XT_PECOFF_IMAGE_PROTOCOL_GUID {0x58544F53, 0x5854, 0x4357, {0x00, 0x50, 0x45, 0x49, 0x4D, 0x47, 0x50, 0x54}} + +/* EFI XT boot protocols GUIDs */ +#define XT_CHAIN_BOOT_PROTOCOL_GUID {0x58544F53, 0x5854, 0x4357, {0x00, 0x43, 0x48, 0x41, 0x49, 0x4E, 0x50, 0x54}} +#define XT_LINUX_BOOT_PROTOCOL_GUID {0x58544F53, 0x5854, 0x4357, {0x00, 0x4C, 0x49, 0x4E, 0x55, 0x58, 0x50, 0x54}} +#define XT_WINNT_BOOT_PROTOCOL_GUID {0x58544F53, 0x5854, 0x4357, {0x00, 0x57, 0x49, 0x4E, 0x4E, 0x54, 0x50, 0x54}} +#define XT_XTOS_BOOT_PROTOCOL_GUID {0x58544F53, 0x5854, 0x4357, {0x00, 0x00, 0x58, 0x54, 0x4F, 0x53, 0x50, 0x54}} + +/* XTOS GUIDs */ +#define XTOS_EXECTOS_GUID {0x58544F53, 0x5854, 0x4357, {0x00, 0x45 0x58, 0x45, 0x43, 0x54, 0x4F, 0x53}} +#define XTOS_XTLDR_LOADER_GUID {0x58544F53, 0x5854, 0x4357, {0x00, 0x00 0x00, 0x58, 0x54, 0x4C, 0x44, 0x52}} + +#endif /* __XTDK_XTGUID_H */ diff --git a/sdk/xtdk/xtkmapi.h b/sdk/xtdk/xtkmapi.h index 514dd43..ecaa892 100644 --- a/sdk/xtdk/xtkmapi.h +++ b/sdk/xtdk/xtkmapi.h @@ -21,6 +21,7 @@ /* Architecture-independent XT API */ #include #include +#include #include #include #include diff --git a/xtldr/includes/bldefs.h b/xtldr/includes/bldefs.h index 92cc018..2ff44cb 100644 --- a/xtldr/includes/bldefs.h +++ b/xtldr/includes/bldefs.h @@ -19,17 +19,4 @@ #define XT_BOOT_DEVICE_HARDDISK 0x03 #define XT_BOOT_DEVICE_RAMDISK 0x04 -/* EFI XT protocols GUIDs */ -#define XT_BOOT_LOADER_PROTOCOL_GUID {0x21FF49E8, 0x5854, 0x424C, {0xE9, 0x11, 0x00, 0x86, 0xE1, 0x2C, 0xD9, 0xC1}} -#define XT_ELF_IMAGE_PROTOCOL_GUID {0x9B539887, 0x5854, 0x424C, {0x42, 0xFA, 0x00, 0x90, 0xC9, 0x04, 0x66, 0xA4}} -#define XT_FRAMEBUFFER_PROTOCOL_GUID {0x99A87C23, 0x5854, 0x424C, {0xE0, 0x10, 0x00, 0xAA, 0xC0, 0x00, 0xDB, 0xFF}} -#define XT_HIVE_IMAGE_PROTOCOL_GUID {0x5A3688A2, 0x5854, 0x424C, {0xBC, 0xDF, 0x00, 0x8F, 0xAA, 0x52, 0x63, 0xD4}} -#define XT_PECOFF_IMAGE_PROTOCOL_GUID {0x85DAFF92, 0x5854, 0x424C, {0xB1, 0xBF, 0x00, 0x79, 0x39, 0xEA, 0x6E, 0xFD}} - -/* EFI XT boot protocols GUIDs */ -#define XT_CHAIN_BOOT_PROTOCOL_GUID {0xC4D19201, 0x5854, 0x424C, {0x3C, 0x01, 0x00, 0x64, 0x90, 0x11, 0x9E, 0xA1}} -#define XT_LINUX_BOOT_PROTOCOL_GUID {0x6B2A9841, 0x5854, 0x424C, {0x93, 0x71, 0x00, 0x3C, 0x34, 0x9B, 0x11, 0x91}} -#define XT_WINNT_BOOT_PROTOCOL_GUID {0x98A80819, 0x5854, 0x424C, {0x37, 0x17, 0x00, 0x2A, 0x55, 0xA3, 0x09, 0xDC}} -#define XT_XTOS_BOOT_PROTOCOL_GUID {0xFF8AD077, 0x5854, 0x424C, {0xA1, 0x77, 0x00, 0x92, 0xEF, 0x1C, 0x09, 0xDC}} - #endif /* __XTLDR_BLDEFS_H */ From 9aafa63617e1bb95e51dd63f45feea69021d9d65 Mon Sep 17 00:00:00 2001 From: Rafal Kupiec Date: Wed, 29 Nov 2023 18:26:46 +0100 Subject: [PATCH 4/4] Move CPU and PIC support into common for i686 and amd64 place --- xtoskrnl/CMakeLists.txt | 4 ++-- xtoskrnl/hl/amd64/cpu.c | 13 +++++++++++++ xtoskrnl/hl/amd64/pic.c | 13 +++++++++++++ xtoskrnl/hl/i686/cpu.c | 13 +++++++++++++ xtoskrnl/hl/i686/pic.c | 13 +++++++++++++ xtoskrnl/hl/{ => x86}/cpu.c | 4 ++-- xtoskrnl/hl/{ => x86}/pic.c | 4 ++-- 7 files changed, 58 insertions(+), 6 deletions(-) create mode 100644 xtoskrnl/hl/amd64/cpu.c create mode 100644 xtoskrnl/hl/amd64/pic.c create mode 100644 xtoskrnl/hl/i686/cpu.c create mode 100644 xtoskrnl/hl/i686/pic.c rename xtoskrnl/hl/{ => x86}/cpu.c (91%) rename xtoskrnl/hl/{ => x86}/pic.c (97%) diff --git a/xtoskrnl/CMakeLists.txt b/xtoskrnl/CMakeLists.txt index d0fde8d..cdbc78b 100644 --- a/xtoskrnl/CMakeLists.txt +++ b/xtoskrnl/CMakeLists.txt @@ -14,10 +14,10 @@ list(APPEND XTOSKRNL_SOURCE ${XTOSKRNL_SOURCE_DIR}/ar/${ARCH}/traps.c ${XTOSKRNL_SOURCE_DIR}/ex/rundown.c ${XTOSKRNL_SOURCE_DIR}/hl/cport.c - ${XTOSKRNL_SOURCE_DIR}/hl/cpu.c ${XTOSKRNL_SOURCE_DIR}/hl/efifb.c ${XTOSKRNL_SOURCE_DIR}/hl/globals.c - ${XTOSKRNL_SOURCE_DIR}/hl/pic.c + ${XTOSKRNL_SOURCE_DIR}/hl/${ARCH}/cpu.c + ${XTOSKRNL_SOURCE_DIR}/hl/${ARCH}/pic.c ${XTOSKRNL_SOURCE_DIR}/hl/${ARCH}/ioport.c ${XTOSKRNL_SOURCE_DIR}/hl/${ARCH}/runlevel.c ${XTOSKRNL_SOURCE_DIR}/ke/apc.c diff --git a/xtoskrnl/hl/amd64/cpu.c b/xtoskrnl/hl/amd64/cpu.c new file mode 100644 index 0000000..b136254 --- /dev/null +++ b/xtoskrnl/hl/amd64/cpu.c @@ -0,0 +1,13 @@ +/** + * PROJECT: ExectOS + * COPYRIGHT: See COPYING.md in the top level directory + * FILE: xtoskrnl/hl/amd64/cpu.c + * DESCRIPTION: HAL AMD64 processor support + * DEVELOPERS: Rafal Kupiec + */ + +#include + + +/* Include common CPU interface */ +#include ARCH_COMMON(cpu.c) diff --git a/xtoskrnl/hl/amd64/pic.c b/xtoskrnl/hl/amd64/pic.c new file mode 100644 index 0000000..60be3eb --- /dev/null +++ b/xtoskrnl/hl/amd64/pic.c @@ -0,0 +1,13 @@ +/** + * PROJECT: ExectOS + * COPYRIGHT: See COPYING.md in the top level directory + * FILE: xtoskrnl/hl/amd64/pic.c + * DESCRIPTION: Programmable Interrupt Controller (PIC) for AMD64 support + * DEVELOPERS: Rafal Kupiec + */ + +#include + + +/* Include common PIC interface */ +#include ARCH_COMMON(pic.c) diff --git a/xtoskrnl/hl/i686/cpu.c b/xtoskrnl/hl/i686/cpu.c new file mode 100644 index 0000000..2915cf4 --- /dev/null +++ b/xtoskrnl/hl/i686/cpu.c @@ -0,0 +1,13 @@ +/** + * PROJECT: ExectOS + * COPYRIGHT: See COPYING.md in the top level directory + * FILE: xtoskrnl/hl/i686/cpu.c + * DESCRIPTION: HAL i686 processor support + * DEVELOPERS: Rafal Kupiec + */ + +#include + + +/* Include common CPU interface */ +#include ARCH_COMMON(cpu.c) diff --git a/xtoskrnl/hl/i686/pic.c b/xtoskrnl/hl/i686/pic.c new file mode 100644 index 0000000..120e588 --- /dev/null +++ b/xtoskrnl/hl/i686/pic.c @@ -0,0 +1,13 @@ +/** + * PROJECT: ExectOS + * COPYRIGHT: See COPYING.md in the top level directory + * FILE: xtoskrnl/hl/i686/pic.c + * DESCRIPTION: Programmable Interrupt Controller (PIC) for i686 support + * DEVELOPERS: Rafal Kupiec + */ + +#include + + +/* Include common PIC interface */ +#include ARCH_COMMON(pic.c) diff --git a/xtoskrnl/hl/cpu.c b/xtoskrnl/hl/x86/cpu.c similarity index 91% rename from xtoskrnl/hl/cpu.c rename to xtoskrnl/hl/x86/cpu.c index 7a4cf69..1afc954 100644 --- a/xtoskrnl/hl/cpu.c +++ b/xtoskrnl/hl/x86/cpu.c @@ -1,8 +1,8 @@ /** * PROJECT: ExectOS * COPYRIGHT: See COPYING.md in the top level directory - * FILE: xtoskrnl/hl/cpu.c - * DESCRIPTION: HAL Processor support + * FILE: xtoskrnl/hl/x86/cpu.c + * DESCRIPTION: HAL x86 (i686/AMD64) processor support * DEVELOPERS: Rafal Kupiec */ diff --git a/xtoskrnl/hl/pic.c b/xtoskrnl/hl/x86/pic.c similarity index 97% rename from xtoskrnl/hl/pic.c rename to xtoskrnl/hl/x86/pic.c index 1c24d62..a385b74 100644 --- a/xtoskrnl/hl/pic.c +++ b/xtoskrnl/hl/x86/pic.c @@ -1,8 +1,8 @@ /** * PROJECT: ExectOS * COPYRIGHT: See COPYING.md in the top level directory - * FILE: xtoskrnl/hl/pic.c - * DESCRIPTION: Programmable Interrupt Controller (PIC) support + * FILE: xtoskrnl/hl/x86/pic.c + * DESCRIPTION: Programmable Interrupt Controller (PIC) for x86 (i686/AMD64) support * DEVELOPERS: Rafal Kupiec */