| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768 |
- #include "all.h"
- int arm64_rsave[] = {
- R0, R1, R2, R3, R4, R5, R6, R7,
- R8, R9, R10, R11, R12, R13, R14, R15,
- IP0, IP1, R18, LR,
- V0, V1, V2, V3, V4, V5, V6, V7,
- V16, V17, V18, V19, V20, V21, V22, V23,
- V24, V25, V26, V27, V28, V29, V30,
- -1
- };
- int arm64_rclob[] = {
- R19, R20, R21, R22, R23, R24, R25, R26,
- R27, R28,
- V8, V9, V10, V11, V12, V13, V14, V15,
- -1
- };
- #define RGLOB (BIT(FP) | BIT(SP) | BIT(R18))
- static int
- arm64_memargs(int op)
- {
- (void)op;
- return 0;
- }
- #define ARM64_COMMON \
- .gpr0 = R0, \
- .ngpr = NGPR, \
- .fpr0 = V0, \
- .nfpr = NFPR, \
- .rglob = RGLOB, \
- .nrglob = 3, \
- .rsave = arm64_rsave, \
- .nrsave = {NGPS, NFPS}, \
- .retregs = arm64_retregs, \
- .argregs = arm64_argregs, \
- .memargs = arm64_memargs, \
- .isel = arm64_isel, \
- .abi1 = arm64_abi, \
- .emitfn = arm64_emitfn, \
- Target T_arm64 = {
- .name = "arm64",
- .abi0 = elimsb,
- .emitfin = elf_emitfin,
- .asloc = ".L",
- ARM64_COMMON
- };
- Target T_arm64_apple = {
- .name = "arm64_apple",
- .apple = 1,
- .abi0 = apple_extsb,
- .emitfin = macho_emitfin,
- .asloc = "L",
- .assym = "_",
- ARM64_COMMON
- };
- MAKESURE(globals_are_not_arguments,
- (RGLOB & (BIT(R8+1) - 1)) == 0
- );
- MAKESURE(arrays_size_ok,
- sizeof arm64_rsave == (NGPS+NFPS+1) * sizeof(int) &&
- sizeof arm64_rclob == (NCLR+1) * sizeof(int)
- );
|