Introduce Overlay Header and LBAs
This commit is contained in:
13
include/PSX/Overlay/overlay.hpp
Normal file
13
include/PSX/Overlay/overlay.hpp
Normal file
@@ -0,0 +1,13 @@
|
||||
#ifndef __JABYENGINE_OVERLAY__H__
|
||||
#define __JABYENGINE_OVERLAY__H__
|
||||
#include "../../stdint.h"
|
||||
|
||||
typedef struct __attribute__((packed)) {
|
||||
void (*execute)();
|
||||
} OverlayHeader;
|
||||
|
||||
typedef struct __attribute__((packed)) {
|
||||
uint16_t lba;
|
||||
uint16_t size;
|
||||
} OverlayLBA;
|
||||
#endif //!__JABYENGINE_OVERLAY__H__
|
16
include/PSX/Overlay/overlay_declaration.hpp
Normal file
16
include/PSX/Overlay/overlay_declaration.hpp
Normal file
@@ -0,0 +1,16 @@
|
||||
#ifndef __JABYENGINE_OVERLAY_DECLARATION__H__
|
||||
#define __JABYENGINE_OVERLAY_DECLARATION__H__
|
||||
|
||||
// No include here because this header should be included in a namespace and we don't want multiple namespace definitions of OverlayHeader and OverlayLBA
|
||||
|
||||
extern const OverlayHeader overlay_header;
|
||||
extern const OverlayLBA overlay_lba[];
|
||||
|
||||
#define __declare_overlay_header(function) \
|
||||
[[gnu::used]] \
|
||||
const OverlayHeader __section(".header") overlay_header = {.execute = &function};
|
||||
|
||||
#define __declare_overlay_lbas(...) \
|
||||
[[gnu::used]] \
|
||||
const OverlayLBA __section(".header.lbas") overlay_lba[] = {__VA_ARGS__};
|
||||
#endif //!__JABYENGINE_OVERLAY_DECLARATION__H__
|
Reference in New Issue
Block a user