Files
revng-revng/share/revng/abi/AAPCS64.yml
2023-03-15 10:19:03 +01:00

94 lines
1.7 KiB
YAML

#
# This file is distributed under the MIT License. See LICENSE.md for details.
#
ABI: AAPCS64
ArgumentsArePositionBased: false
OnlyStartDoubleArgumentsFromAnEvenRegister: true
ArgumentsCanBeSplitBetweenRegistersAndStack: true
UsePointerToCopyForStackArguments: false
CalleeIsResponsibleForStackCleanup: false
StackAlignment: 16
MaximumGPRsPerAggregateArgument: 2
MaximumGPRsPerAggregateReturnValue: 2
MaximumGPRsPerScalarArgument: 2
MaximumGPRsPerScalarReturnValue: 2
GeneralPurposeArgumentRegisters:
- x0_aarch64
- x1_aarch64
- x2_aarch64
- x3_aarch64
- x4_aarch64
- x5_aarch64
- x6_aarch64
- x7_aarch64
# This lists all the registers allowed for use by the spec, BUT note that I have
# never run into a case where more than the first two registers are involved.
GeneralPurposeReturnValueRegisters:
- x0_aarch64
- x1_aarch64
- x2_aarch64
- x3_aarch64
- x4_aarch64
- x5_aarch64
- x6_aarch64
- x7_aarch64
VectorArgumentRegisters:
- v0_aarch64
- v1_aarch64
- v2_aarch64
- v3_aarch64
- v4_aarch64
- v5_aarch64
- v6_aarch64
- v7_aarch64
VectorReturnValueRegisters:
- v0_aarch64
- v1_aarch64
- v2_aarch64
- v3_aarch64
- v4_aarch64
- v5_aarch64
- v6_aarch64
- v7_aarch64
CalleeSavedRegisters:
- x19_aarch64
- x20_aarch64
- x21_aarch64
- x22_aarch64
- x23_aarch64
- x24_aarch64
- x25_aarch64
- x26_aarch64
- x27_aarch64
- x28_aarch64
- x29_aarch64
- v8_aarch64
- v9_aarch64
- v10_aarch64
- v11_aarch64
- v12_aarch64
- v13_aarch64
- v14_aarch64
- v15_aarch64
ReturnValueLocationRegister: x8_aarch64
ScalarTypes:
- Size: 1
- Size: 2
- Size: 4
- Size: 8
- Size: 16
FloatingPointScalarTypes:
- Size: 2
- Size: 4
- Size: 8
- Size: 16