Commit Graph
100 Commits
Author SHA1 Message Date
belliash 75c519a70c Use more generic name for this macro use pointer used behind it will point to kernel debugger after it gets initialized 2023-02-07 19:37:44 +01:00
belliash 67768ae7a3 Mark ArpIdentifyProcessor() as unimplemented 2023-02-06 16:15:24 +01:00
belliash f8d2ccc0d0 Add more debugging macros 2023-02-06 16:10:32 +01:00
belliash 9c7d961c5a Architecture specific initialization after processor init is done 2023-02-06 15:53:11 +01:00
belliash 385f0e6de0 Not all AMD64 CPUs support large pages and global pages, unfortunately 2023-02-05 22:14:47 +01:00
belliash 76f22fbdc4 Initialize segments and processor registers for i686 architecture 2023-02-05 15:45:22 +01:00
belliash 2ba42c5270 Update ideas 2023-02-05 13:23:11 +01:00
belliash 911903d0eb Add missing routine description 2023-02-05 10:08:49 +01:00
belliash 707c92e08a Boot loader no longer needs to do anything related to the stack 2023-02-05 10:03:21 +01:00
belliash d6aac59199 Let kernel initialize stack on it's own without relying on boot loader 2023-02-05 09:55:59 +01:00
belliash 0b743a5f26 Add stub routine for identifying processor 2023-02-05 00:42:30 +01:00
belliash c6cadbd655 Initialize MXCSR register 2023-02-05 00:30:12 +01:00
belliash 5eaf7d63a3 Initialize Page Attribute Table 2023-02-05 00:14:34 +01:00
belliash 55cdae7c83 Initialize AMD64 processor registers 2023-02-04 23:40:03 +01:00
belliash f181215341 Initialize segment registers 2023-02-04 00:17:07 +01:00
belliash f37722b6e6 Distinguish ProcessorBlock and ProcessorControlBlock 2023-02-03 19:28:03 +01:00
belliash b90f37dad4 Fill in Interrupt Descriptor Table (IDT) 2023-02-03 18:40:10 +01:00
belliash 648ad1636a Cleanup TSS initialization code 2023-02-03 18:27:50 +01:00
belliash 269214ed34 Another improvements to GDT 2023-02-03 18:00:37 +01:00
belliash a49d0804ce Add trap handlers for both i686 and amd64 2023-02-02 23:31:32 +01:00
belliash 19f34d4b17 Cleanup the code 2023-02-02 19:42:57 +01:00
belliash 715f875c4f Set alignment and packing properly 2023-02-02 17:01:18 +01:00
belliash 2e2b01742a Definitions for setting structures alignment and packing 2023-02-02 15:47:21 +01:00
belliash 73fc7607cd There is no need to specify alignment of the structure in the forward reference 2023-02-02 15:37:57 +01:00
belliash 404f2f85c6 Cleanup the Interrupt Stack Table 2023-02-01 23:47:57 +01:00
belliash 7fc1f04cd0 TSS entry is already put into GDT table, just initialize it 2023-02-01 23:37:12 +01:00
belliash cbd21ced39 Use a size of the structure, not a pointer 2023-02-01 22:38:36 +01:00
belliash dc1a94b982 This is 'Processor Block' 2023-02-01 22:02:07 +01:00
belliash 3522539d4b Initialize Interrupt Descriptor Table (IDT) 2023-02-01 21:56:17 +01:00
belliash 1ef205d47b Initialize DoubleFault and NonMaskableInterrupt TSS entries 2023-02-01 20:36:40 +01:00
belliash e2813bcdaa Fix entries in Global Descriptor Table (GDT) 2023-02-01 20:24:55 +01:00
belliash 21fbe6febe Add IDT related definitions 2023-02-01 20:14:10 +01:00
belliash 5bbda188c6 IDT access levels and gate types 2023-02-01 00:51:13 +01:00
belliash 9a1e9b1084 Define TSS offsets 2023-01-30 23:43:10 +01:00
belliash 892c9eca86 Do not hardcode I/O map base 2023-01-30 22:38:41 +01:00
belliash a761d3125a Architecture specific initialization prior to processor structures initialization 2023-01-30 20:34:05 +01:00
belliash 6f068513cd Initial processor block initialization 2023-01-30 19:07:05 +01:00
belliash ebe6792f2b Add MSR (Model Specific Registers) values 2023-01-30 17:59:00 +01:00
belliash d3376ce33b This is no longer an idea 2023-01-29 22:33:12 +01:00
belliash 2bf15a5bb8 Fix pointer offset in PE relocation code 2023-01-29 20:38:05 +01:00
belliash ddffd0c582 Temporary kernel stack is no longer used 2023-01-29 11:08:51 +01:00
belliash df11473eac Cleanup xtldr code as it no longer need to initialize CPU structures 2023-01-29 10:59:22 +01:00
belliash bca7ac41b8 Initialize boot CPU structures inside kernel on i686 architecture 2023-01-29 10:54:52 +01:00
belliash 7ac434cb99 Move architecture specific globals to external header, as ex. there is no GDT on ARM 2023-01-29 09:48:59 +01:00
belliash 79a5027bca Cleanup AMD64 part of CPU initialization, as it has been moved to the kernel 2023-01-29 01:01:36 +01:00
belliash ce4e590347 Add missing forward declaration of ArInitializeProcessor() routine 2023-01-29 00:57:06 +01:00
belliash 900e71459a Add missing x86 descriptor sizes 2023-01-29 00:54:36 +01:00
belliash ae60753e33 Add missing source files for i686 architecture 2023-01-29 00:52:05 +01:00
belliash 7bf4a9ab8d Initialize boot CPU structures inside kernel on AMD64 2023-01-29 00:45:17 +01:00
belliash 8733a23b20 Include kernel top header 2023-01-29 00:34:34 +01:00
belliash 757560ffeb Do not use EFI RunTime Services in kernel as they are not mapped correctly 2023-01-29 00:32:52 +01:00
belliash 9cd9a1eafa Correct typos 2023-01-29 00:25:25 +01:00
belliash 29ec28fafe Update ideas and known issues markdown 2023-01-28 19:22:02 +01:00
belliash 27e2fdf4f2 Introduce architecture library as new kernel subsystem and move selected routines into new subsystem 2023-01-28 10:34:55 +01:00
belliash 651113c4e8 Update Discord invitation link 2023-01-27 23:37:20 +01:00
belliash d5f9b20b51 Import kernel readme 2023-01-27 22:59:53 +01:00
belliash bf141fe25e Basic IDT setup in the bootloader 2023-01-26 20:14:27 +01:00
belliash e94e50b5d9 Implement HlLoadInterruptDescriptorTable() intrinsics for loading IDT 2023-01-26 20:08:57 +01:00
belliash 6613fdd32c Correct markdown 2023-01-26 16:55:34 +01:00
belliash efe0b45ae4 Import ideas and known issues 2023-01-26 16:43:51 +01:00
belliash b57e79aa7f Proceed with architecture specific initialization 2023-01-25 19:37:13 +01:00
belliash 8da38af489 Rename KepInitializeBootStructures() to KepInitializeStack() 2023-01-25 19:28:12 +01:00
belliash 3c3e93afc7 Save kernel initialization block earlier 2023-01-25 18:45:08 +01:00
belliash 3b08bcaa4f Setup processor context (GDT, PCR, TSS) and kernel startup stack before booting XTOS 2023-01-25 18:39:07 +01:00
belliash 3ad3149f80 Add descriptor structure definition 2023-01-25 17:42:35 +01:00
belliash bfc9db8b6d Unify KGDTENTRY and KIDTENTRY between architectures as much as possible 2023-01-25 17:35:03 +01:00
belliash 3ee759cc27 i686 Interrupt request levels definitions 2023-01-25 17:18:27 +01:00
belliash 7bd67d6210 Add GDT and Segments related definitions for i686 2023-01-25 17:13:24 +01:00
belliash a366de618f AMD64 Interrupt request levels definitions 2023-01-25 17:08:42 +01:00
belliash 8f348c3954 Add GDT and Segments related definitions for AMD64 2023-01-25 17:05:15 +01:00
belliash c4d53f12f2 Allocate memory for kernel startup stack 2023-01-25 16:47:27 +01:00
belliash b3bf613e1b Make sure paging has been successfully enabled 2023-01-25 16:39:15 +01:00
belliash 707dc37868 Fix type of Source parameter in HlLoadSegment() routine 2023-01-24 23:08:48 +01:00
belliash 35aa514f95 Implement HlLoadSegment() intrinsics routine 2023-01-24 19:27:18 +01:00
belliash d3d8d144a0 Implement HlLoadGlobalDescriptorTable() intrinsic 2023-01-23 20:13:51 +01:00
belliash adc6677c9d Code formatting 2023-01-23 20:04:32 +01:00
belliash c81b858757 Implement HlReadGSQuadWord() intrinsic 2023-01-23 19:59:54 +01:00
belliash 9fd21a8820 Update badges 2023-01-23 15:33:33 +01:00
belliash f20ab3e52e Implement HlLoadTaskRegister() for loading TSS segment selector into task register 2023-01-23 15:26:35 +01:00
belliash 9cbe2d458c Initial support for EFI framebuffer 2023-01-23 15:26:35 +01:00
belliash fb60724710 Add link to CI/CD artifacts 2023-01-18 22:29:43 +01:00
belliash 145fc17271 Pass framebuffer pitch information to the kernel 2023-01-18 20:15:41 +01:00
belliash 41a0a2b37c Shorter and longer version of the build timestamp 2023-01-18 20:10:03 +01:00
belliash 42af53c190 Add publishing task to the pipeline 2023-01-18 00:23:14 +01:00
belliash bb56641e4b Do not call SetVirtualAddressMap() as this might break boot process and runtime services are mapped anyway 2023-01-16 21:58:30 +01:00
belliash 1a93c198ed Add missing forward reference to _LOADER_GRAPHICS_INFORMATION_BLOCK structure 2023-01-16 19:51:19 +01:00
belliash b8df45ab6a Map framebuffer and fill information about it into kernel parameters 2023-01-16 18:49:54 +01:00
belliash 605597262c Initial version of EFI framebuffer module, currently support only GOP 2023-01-16 18:41:25 +01:00
belliash 289316b43b Print hexadecimal values in uppercase 2023-01-16 15:55:38 +01:00
belliash e3f0782053 Add enumeration of efi supported graphics protocols 2023-01-16 00:10:44 +01:00
belliash 5d74fb2bb5 Add UGA related structures 2023-01-16 00:03:35 +01:00
belliash 87d8300c6a Remove no longer needed EfiLoaderStack global variable 2023-01-15 18:54:31 +01:00
belliash 9a52be5ab9 Print a reason why module failed to load 2023-01-15 18:53:09 +01:00
belliash 0c3e18fd86 Once BlGetMemoryMap() is called, it cannot allocate or free memory, otherwise key gets invalidated 2023-01-15 18:50:12 +01:00
belliash 0461d975e0 Check ExitBootServices() status code 2023-01-15 16:52:02 +01:00
belliash fb60625abc Add more intrinsic routines 2023-01-13 22:32:45 +01:00
belliash bff460a879 Print COM port address properly 2023-01-11 23:29:27 +01:00
belliash 7496fa324e Map EfiLoaderData as some UEFI implementations might need this before kernel take over control 2023-01-11 23:26:54 +01:00
belliash 42c3d4eff7 Fix NULL pointer 2023-01-11 23:16:44 +01:00
belliash 21abe0553a Code formatting 2023-01-11 15:39:36 +01:00