mirror of
https://github.com/ACreTeam/ac-decomp
synced 2026-05-25 23:15:08 -04:00
93 lines
2.3 KiB
C
93 lines
2.3 KiB
C
#ifndef PPC_EABI_INIT_H
|
|
#define PPC_EABI_INIT_H
|
|
|
|
#ifdef __cplusplus
|
|
extern "C"{
|
|
#endif
|
|
|
|
typedef void (*voidfunctionptr)(void); // pointer to function returning void
|
|
__declspec(section ".ctors") extern voidfunctionptr _ctors[];
|
|
__declspec(section ".dtors") extern voidfunctionptr _dtors[];
|
|
|
|
/**
|
|
* Linker Generated Symbols
|
|
*/
|
|
|
|
// Declare linker symbols for a section in the ROM
|
|
#define DECL_ROM_SECTION(x) \
|
|
extern u8 _f##x[]; \
|
|
extern u8 _f##x##_rom[]; \
|
|
extern u8 _e##x[];
|
|
|
|
// Declare linker symbols for a BSS section
|
|
#define DECL_BSS_SECTION(x) \
|
|
extern u8 _f##x[]; \
|
|
extern u8 _e##x[];
|
|
|
|
// Debugger stack
|
|
extern u8 _db_stack_addr[];
|
|
extern u8 _db_stack_end[];
|
|
|
|
// Program arena
|
|
extern u8 __ArenaLo[];
|
|
extern u8 __ArenaHi[];
|
|
|
|
// Program stack
|
|
extern u8 _stack_addr[];
|
|
extern u8 _stack_end[];
|
|
|
|
// Small data bases
|
|
extern u8 _SDA_BASE_[];
|
|
extern u8 _SDA2_BASE_[];
|
|
|
|
// ROM sections
|
|
DECL_ROM_SECTION(_init);
|
|
DECL_ROM_SECTION(extab);
|
|
DECL_ROM_SECTION(extabindex);
|
|
DECL_ROM_SECTION(_text);
|
|
DECL_ROM_SECTION(_ctors);
|
|
DECL_ROM_SECTION(_dtors);
|
|
DECL_ROM_SECTION(_rodata);
|
|
DECL_ROM_SECTION(_data);
|
|
DECL_ROM_SECTION(_sdata);
|
|
DECL_ROM_SECTION(_sdata2);
|
|
DECL_ROM_SECTION(_stack);
|
|
|
|
// BSS sections
|
|
DECL_BSS_SECTION(_bss);
|
|
DECL_BSS_SECTION(_sbss);
|
|
DECL_BSS_SECTION(_sbss2);
|
|
|
|
void __init_hardware(void);
|
|
void __flush_cache(void*, size_t);
|
|
void __init_user(void);
|
|
void __fini_cpp(void);
|
|
void _ExitProcess(void);
|
|
|
|
typedef struct RomSection {
|
|
void* romOfs; // at 0x4
|
|
void* virtualOfs; // at 0x0
|
|
size_t size; // at 0x8
|
|
} RomSection;
|
|
|
|
typedef struct BssSection {
|
|
void* virtualOfs; // at 0x0
|
|
size_t size; // at 0x8
|
|
} BssSection;
|
|
|
|
typedef struct ExtabIndexInfo {
|
|
void* etiStart; // at 0x0
|
|
void* etiEnd; // at 0x4
|
|
void* codeStart; // at 0x8
|
|
u32 codeSize; // at 0x10
|
|
} ExtabIndexInfo;
|
|
|
|
__declspec(section ".init") extern RomSection _rom_copy_info[];
|
|
__declspec(section ".init") extern BssSection _bss_init_info[];
|
|
__declspec(section ".init") extern ExtabIndexInfo _eti_init_info[];
|
|
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif
|
|
#endif
|