Digimon World 3 decomp
The European version, SLES_039.36
Loading...
Searching...
No Matches
include_asm.h
Go to the documentation of this file.
1#ifndef INCLUDE_ASM_H
2#define INCLUDE_ASM_H
3
4#if !defined(M2CTX) && !defined(PERMUTER) && !defined(SKIP_ASM)
5
6/*
7 * FOLDER is relative to the version's splat output, ASM_DIR (asm/<version>),
8 * which the Makefile defines: INCLUDE_ASM("main/nonmatchings/pad", NAME)
9 * includes asm/us/main/nonmatchings/pad/NAME.s when building VERSION=us.
10 */
11#ifndef ASM_DIR
12#error "ASM_DIR is not defined: the Makefile gives it, as asm/<version>"
13#endif
14
15#ifndef INCLUDE_ASM
16#define INCLUDE_ASM(FOLDER, NAME) \
17 __asm__( \
18 ".section .text\n" \
19 " .set noat\n" \
20 " .set noreorder\n" \
21 " .include \"" ASM_DIR "/" FOLDER "/" #NAME ".s\"\n" \
22 " .set reorder\n" \
23 " .set at\n" \
24 )
25#endif
26#ifndef INCLUDE_RODATA
27#define INCLUDE_RODATA(FOLDER, NAME) \
28 __asm__( \
29 ".section .rodata\n" \
30 " .include \"" ASM_DIR "/" FOLDER "/" #NAME ".s\"\n" \
31 ".section .text" \
32 )
33#endif
34
35#if defined(INCLUDE_ASM_USE_MACRO_INC) && INCLUDE_ASM_USE_MACRO_INC
36__asm__(".include \"include/macro.inc\"\n");
37#else
38__asm__(".include \"include/labels.inc\"\n");
39#endif
40
41#else
42
43#ifndef INCLUDE_ASM
44#define INCLUDE_ASM(FOLDER, NAME)
45#endif
46#ifndef INCLUDE_RODATA
47#define INCLUDE_RODATA(FOLDER, NAME)
48#endif
49
50#endif /* !defined(M2CTX) && !defined(PERMUTER) */
51
52#endif /* INCLUDE_ASM_H */