NeKernel
dev
Loading...
Searching...
No Matches
Handover.h
Go to the documentation of this file.
1
/* ========================================
2
3
Copyright (C) 2024-2025, Amlal El Mahrouss, licensed under the Apache 2.0 license.
4
5
======================================== */
6
17
18
#pragma once
19
20
#include <
FirmwareKit/EFI/EFI.h
>
21
#include <
NeKit/Config.h
>
22
23
#define kHandoverMagic (0xBADCC)
24
#define kHandoverVersion (0x0117)
25
26
/* Initial bitmap pointer location and size. */
27
#define kHandoverBitMapSz (gib_cast(4))
28
#define kHandoverStructSz sizeof(HEL::BootInfoHeader)
29
30
namespace
Kernel::HEL
{
34
enum
{
35
kTypeKernel
= 100,
36
kTypeKernelDriver
= 101,
37
kTypeRsrc
= 102,
38
kTypeInvalid
= 103,
39
kTypeCount
= 4,
40
};
41
45
46
enum
{
47
kArchAMD64
= 122,
48
kArchARM64
= 123,
49
kArchRISCV
= 124,
50
kArchCount
= 3,
51
};
52
53
struct
BootInfoHeader
final {
54
UInt64
f_Magic
;
55
UInt64
f_Version
;
56
57
VoidPtr
f_BitMapStart
;
58
SizeT
f_BitMapSize
;
59
60
VoidPtr
f_PageStart
;
61
62
VoidPtr
f_KernelImage
;
63
SizeT
f_KernelSz
;
64
65
VoidPtr
f_LibSystemImage
;
66
SizeT
f_LibSystemSz
;
67
68
VoidPtr
f_StackTop
;
69
SizeT
f_StackSz
;
70
71
WideChar
f_FirmwareVendorName
[32];
72
SizeT
f_FirmwareVendorLen
;
73
74
VoidPtr
f_FirmwareCustomTables
[2];
// On EFI 0: BS 1: ST
75
76
struct
{
77
VoidPtr
f_SmBios
;
78
VoidPtr
f_VendorPtr
;
79
VoidPtr
f_MpPtr
;
80
Bool
f_MultiProcessingEnabled
;
81
UInt32
f_ImageKey
;
82
EfiHandlePtr
f_ImageHandle
;
83
}
f_HardwareTables
;
84
85
struct
{
86
UIntPtr
f_The
;
87
SizeT
f_Size
;
88
UInt32
f_Width
;
89
UInt32
f_Height
;
90
UInt32
f_PixelFormat
;
91
UInt32
f_PixelPerLine
;
92
}
f_GOP
;
93
94
UInt64
f_FirmwareSpecific
[8];
95
};
96
97
enum
{
98
kHandoverTableBS
,
99
kHandoverTableST
,
100
kHandoverTableCount
,
101
};
102
104
typedef
Int32
(*
HandoverProc
)(
BootInfoHeader
* boot_info);
105
}
// namespace Kernel::HEL
106
108
inline
Kernel::HEL::BootInfoHeader
*
kHandoverHeader
=
nullptr
;
EFI.h
EfiHandlePtr
struct EfiHandle * EfiHandlePtr
Core Handle Kind Self is like NT's Win32 HANDLE type.
kHandoverHeader
Kernel::HEL::BootInfoHeader * kHandoverHeader
Bootloader information header global variable.
Definition
Handover.h:108
Config.h
Kernel::HEL
Definition
Handover.h:30
Kernel::HEL::HandoverProc
Int32(* HandoverProc)(BootInfoHeader *boot_info)
Alias of bootloader main type.
Definition
Handover.h:104
Kernel::HEL::kArchARM64
@ kArchARM64
Definition
Handover.h:48
Kernel::HEL::kArchAMD64
@ kArchAMD64
Definition
Handover.h:47
Kernel::HEL::kArchCount
@ kArchCount
Definition
Handover.h:50
Kernel::HEL::kArchRISCV
@ kArchRISCV
Definition
Handover.h:49
Kernel::HEL::kHandoverTableBS
@ kHandoverTableBS
Definition
Handover.h:98
Kernel::HEL::kHandoverTableCount
@ kHandoverTableCount
Definition
Handover.h:100
Kernel::HEL::kHandoverTableST
@ kHandoverTableST
Definition
Handover.h:99
Kernel::HEL::kTypeInvalid
@ kTypeInvalid
Definition
Handover.h:38
Kernel::HEL::kTypeCount
@ kTypeCount
Definition
Handover.h:39
Kernel::HEL::kTypeKernel
@ kTypeKernel
Definition
Handover.h:35
Kernel::HEL::kTypeRsrc
@ kTypeRsrc
Definition
Handover.h:37
Kernel::HEL::kTypeKernelDriver
@ kTypeKernelDriver
Definition
Handover.h:36
Kernel::SizeT
__SIZE_TYPE__ SizeT
Definition
Config.h:60
Kernel::UInt32
__UINT32_TYPE__ UInt32
Definition
Config.h:44
Kernel::VoidPtr
void * VoidPtr
Definition
Config.h:33
Kernel::Int32
__INT32_TYPE__ Int32
Definition
Config.h:38
Kernel::UIntPtr
__UINTPTR_TYPE__ UIntPtr
Definition
Config.h:62
Kernel::UInt64
__UINT64_TYPE__ UInt64
Definition
Config.h:48
Kernel::WideChar
wchar_t WideChar
Definition
Config.h:77
Kernel::Bool
bool Bool
Definition
Config.h:50
Kernel::HEL::BootInfoHeader
Definition
Handover.h:53
Kernel::HEL::BootInfoHeader::f_ImageKey
UInt32 f_ImageKey
Definition
Handover.h:81
Kernel::HEL::BootInfoHeader::f_Version
UInt64 f_Version
Definition
Handover.h:55
Kernel::HEL::BootInfoHeader::f_Width
UInt32 f_Width
Definition
Handover.h:88
Kernel::HEL::BootInfoHeader::f_ImageHandle
EfiHandlePtr f_ImageHandle
Definition
Handover.h:82
Kernel::HEL::BootInfoHeader::f_BitMapSize
SizeT f_BitMapSize
Definition
Handover.h:58
Kernel::HEL::BootInfoHeader::f_PageStart
VoidPtr f_PageStart
Definition
Handover.h:60
Kernel::HEL::BootInfoHeader::f_HardwareTables
struct Kernel::HEL::BootInfoHeader::@163156170125113151221157153323302304120060157320 f_HardwareTables
Kernel::HEL::BootInfoHeader::f_PixelFormat
UInt32 f_PixelFormat
Definition
Handover.h:90
Kernel::HEL::BootInfoHeader::f_LibSystemImage
VoidPtr f_LibSystemImage
Definition
Handover.h:65
Kernel::HEL::BootInfoHeader::f_KernelSz
SizeT f_KernelSz
Definition
Handover.h:63
Kernel::HEL::BootInfoHeader::f_VendorPtr
VoidPtr f_VendorPtr
Definition
Handover.h:78
Kernel::HEL::BootInfoHeader::f_Height
UInt32 f_Height
Definition
Handover.h:89
Kernel::HEL::BootInfoHeader::f_FirmwareVendorName
WideChar f_FirmwareVendorName[32]
Definition
Handover.h:71
Kernel::HEL::BootInfoHeader::f_BitMapStart
VoidPtr f_BitMapStart
Definition
Handover.h:57
Kernel::HEL::BootInfoHeader::f_KernelImage
VoidPtr f_KernelImage
Definition
Handover.h:62
Kernel::HEL::BootInfoHeader::f_FirmwareCustomTables
VoidPtr f_FirmwareCustomTables[2]
Definition
Handover.h:74
Kernel::HEL::BootInfoHeader::f_The
UIntPtr f_The
Definition
Handover.h:86
Kernel::HEL::BootInfoHeader::f_MpPtr
VoidPtr f_MpPtr
Definition
Handover.h:79
Kernel::HEL::BootInfoHeader::f_FirmwareVendorLen
SizeT f_FirmwareVendorLen
Definition
Handover.h:72
Kernel::HEL::BootInfoHeader::f_PixelPerLine
UInt32 f_PixelPerLine
Definition
Handover.h:91
Kernel::HEL::BootInfoHeader::f_MultiProcessingEnabled
Bool f_MultiProcessingEnabled
Definition
Handover.h:80
Kernel::HEL::BootInfoHeader::f_StackSz
SizeT f_StackSz
Definition
Handover.h:69
Kernel::HEL::BootInfoHeader::f_SmBios
VoidPtr f_SmBios
Definition
Handover.h:77
Kernel::HEL::BootInfoHeader::f_Magic
UInt64 f_Magic
Definition
Handover.h:54
Kernel::HEL::BootInfoHeader::f_Size
SizeT f_Size
Definition
Handover.h:87
Kernel::HEL::BootInfoHeader::f_FirmwareSpecific
UInt64 f_FirmwareSpecific[8]
Definition
Handover.h:94
Kernel::HEL::BootInfoHeader::f_LibSystemSz
SizeT f_LibSystemSz
Definition
Handover.h:66
Kernel::HEL::BootInfoHeader::f_GOP
struct Kernel::HEL::BootInfoHeader::@214042324261331356317125133243174243242143142057 f_GOP
Kernel::HEL::BootInfoHeader::f_StackTop
VoidPtr f_StackTop
Definition
Handover.h:68
src
kernel
FirmwareKit
Handover.h
Generated by
1.15.0