summaryrefslogtreecommitdiffhomepage
path: root/dev/kernel/FirmwareKit/CoreBoot
diff options
context:
space:
mode:
Diffstat (limited to 'dev/kernel/FirmwareKit/CoreBoot')
-rw-r--r--dev/kernel/FirmwareKit/CoreBoot/CoreBoot.h31
-rw-r--r--dev/kernel/FirmwareKit/CoreBoot/NS.h10
-rw-r--r--dev/kernel/FirmwareKit/CoreBoot/NetBoot.h25
3 files changed, 66 insertions, 0 deletions
diff --git a/dev/kernel/FirmwareKit/CoreBoot/CoreBoot.h b/dev/kernel/FirmwareKit/CoreBoot/CoreBoot.h
new file mode 100644
index 00000000..5fe3f4ea
--- /dev/null
+++ b/dev/kernel/FirmwareKit/CoreBoot/CoreBoot.h
@@ -0,0 +1,31 @@
+/* -------------------------------------------
+
+ Copyright (C) 2024-2025, Amlal EL Mahrouss, all rights reserved.
+
+------------------------------------------- */
+
+#pragma once
+
+#include <NewKit/Defines.h>
+
+namespace Firmware::Detail::CoreBoot
+{
+ using namespace NeOS;
+
+ struct LEHeader;
+
+ /// @brief Linear Executable Header
+ /// @author Amlal EL Mahrouss
+ struct ATTRIBUTE(aligned(4)) LEHeader
+ {
+ const Char fMagic[2]; // magic number
+ const Char fName[10]; // operating system name
+ const UInt32 fRevision; // firmware revision
+ const UInt32 fStartAddress; // start address (master/slave(s) thread)
+
+#ifdef NE_IS_EXTENDED_COREBOOT
+ const UIntPtr fMasterStructure; // master structure for MP/PM and device tree and such (ARM)
+ const UIntPtr fMasterStructureVersion; // master structure version.
+#endif
+ };
+} // namespace Firmware::Detail::CoreBoot
diff --git a/dev/kernel/FirmwareKit/CoreBoot/NS.h b/dev/kernel/FirmwareKit/CoreBoot/NS.h
new file mode 100644
index 00000000..95576de8
--- /dev/null
+++ b/dev/kernel/FirmwareKit/CoreBoot/NS.h
@@ -0,0 +1,10 @@
+/* -------------------------------------------
+
+ Copyright (C) 2024-2025, Amlal EL Mahrouss, all rights reserved.
+
+------------------------------------------- */
+
+#pragma once
+
+#include <FirmwareKit/CoreBoot/CoreBoot.h>
+#include <FirmwareKit/CoreBoot/NetBoot.h> \ No newline at end of file
diff --git a/dev/kernel/FirmwareKit/CoreBoot/NetBoot.h b/dev/kernel/FirmwareKit/CoreBoot/NetBoot.h
new file mode 100644
index 00000000..21ce02ba
--- /dev/null
+++ b/dev/kernel/FirmwareKit/CoreBoot/NetBoot.h
@@ -0,0 +1,25 @@
+/* -------------------------------------------
+
+ Copyright (C) 2024-2025, Amlal EL Mahrouss, all rights reserved.
+
+------------------------------------------- */
+
+#pragma once
+
+#include <NewKit/Defines.h>
+
+/// @brief the internet header is used to download updates OTA.
+typedef struct NETBOOT_INTERNET_HEADER
+{
+ NeOS::Char NB1; /// magic char 1 'N'
+ NeOS::Char NB2; /// magic char 2 'E'
+ NeOS::Char NB3; /// magic char 3 'T'
+ NeOS::Char NB4; /// magic char 4 'B'
+
+ NeOS::Char PatchName[256U]; /// example: ColdChoco
+ NeOS::Int32 PatchLength; /// the patch length.
+ NeOS::Char PatchTarget[256U]; /// the target file.
+ NeOS::Boolean ImpliesROM; /// does it imply an EEPROM reprogram?
+ NeOS::Boolean Preflight; /// is it a preflight packet.
+ NeOS::Char Patch[]; /// non preflight packet has a patch blob for a **PatchTarget**
+} NETBOOT_INTERNET_HEADER;