tp/include/dol2asm.h

51 lines
1.6 KiB
C

#ifndef DOL2ASM
#define DOL2ASM
// this helps remove useless error from the linter when using vscode.
#ifndef IN_VSCODE_EDITOR
#define SECTION_INIT extern "C" __declspec(section ".init")
#define SECTION_RODATA extern "C" __declspec(section ".rodata")
#define SECTION_DATA extern "C" __declspec(section ".data")
#define SECTION_SDATA extern "C" __declspec(section ".sdata")
#define SECTION_SDATA2 extern "C" __declspec(section ".sdata2")
#define SECTION_BSS extern "C" __declspec(section ".data")
#define SECTION_SBSS extern "C" __declspec(section ".sdata")
#define SECTION_SBSS2 extern "C" __declspec(section ".sdata2")
#define SECTION_CTORS extern "C" __declspec(section ".ctors")
#define SECTION_DTORS extern "C" __declspec(section ".dtors")
#define SECTION_EXTAB extern "C" __declspec(section "extab_")
#define SECTION_EXTABINDEX extern "C" __declspec(section "extabindex_")
#define SECTION_DEAD extern "C" __declspec(section ".dead")
#else
#define SECTION_INIT
#define SECTION_RODATA
#define SECTION_DATA
#define SECTION_SDATA
#define SECTION_SDATA2
#define SECTION_BSS
#define SECTION_SBSS
#define SECTION_SBSS2
#define SECTION_CTORS
#define SECTION_DTORS
#define SECTION_EXTAB
#define SECTION_EXTABINDEX
#define SECTION_DEAD
// vscode doesn't like asm and nofralloc very much
#define asm
#define nofralloc
#endif
// floating-point constants
// TODO: move to different header
#define _HUGE_ENUF 1e+300
#define INFINITY ((float)(_HUGE_ENUF * _HUGE_ENUF))
#define HUGE_VAL ((double)INFINITY)
#define HUGE_VALF ((float)INFINITY)
#define HUGE_VALL ((long double)INFINITY)
#define FLOAT_INF HUGE_VALF
#define DOUBLE_INF HUGE_VAL
#endif /* DOL2ASM */