summaryrefslogtreecommitdiffhomepage
path: root/dev/kernel/FirmwareKit/NeBoot/NeBoot.h
blob: 8e8fd87fe5266f67d475744144ea1e3e254b2a90 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
/* ========================================

  Copyright (C) 2024-2025, Amlal El Mahrouss, licensed under the Apache 2.0 license.

======================================== */

#pragma once

#include <NeKit/Defines.h>

namespace Firmware::Detail::NeBoot {
using namespace Kernel;

struct NEBOOT_LINEAR_EXEC;

/// @brief Linear Executable Header
/// @author Amlal El Mahrouss
struct ATTRIBUTE(aligned(4)) NEBOOT_LINEAR_EXEC {
  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
  UIntPtr fMasterStructure;         // master structure for MP/PM and device tree and such. (ARM)
  UIntPtr fMasterStructureVersion;  // master structure version.
#endif

#ifdef NE_IS_MBCI_COREBOOT
  UIntPtr fMBCIStructure;         // MBCI structure for MBCI (ARM)
  UIntPtr fMBCIStructureVersion;  // MBCI structure version.
#endif
};
}  // namespace Firmware::Detail::NeBoot