CACAO
Macros
md-asm.hpp File Reference

Go to the source code of this file.

Macros

#define a0   x0 /* argument & result registers */
 
#define a1   x1
 
#define a2   x2
 
#define a3   x3
 
#define a4   x4
 
#define a5   x5
 
#define a6   x6
 
#define a7   x7
 
#define ires   x8 /* indirect result location (structs) */
 
#define t0   x12 /* temporary registers */
 
#define t1   x13
 
#define t2   x14
 
#define t3   x15
 
#define t4   x16
 
#define t5   x17
 
#define xptr   x9 /* exception pointer = itmp1 */
 
#define xpc   x10 /* exception pc = itmp2 */
 
#define itmp1   x9
 
#define itmp2   x10
 
#define itmp3   x11
 
#define t0i   w12
 
#define t1i   w13
 
#define ip0   x16 /* intra-procedure-call temporary registers */
 
#define ip1   x17
 
#define platf   x18 /* platform register (for platf-specific ABI) */
 
#define pv   x18 /* using platf for procedure vector */
 
#define mptr   x10 /* using itmp2 for method pointer */
 
#define s0   x19 /* variable registers, all following registers are callee saved reg */
 
#define s1   x20
 
#define s2   x21
 
#define s3   x22
 
#define s4   x23
 
#define s5   x24
 
#define s6   x25
 
#define s7   x26
 
#define s8   x27
 
#define s9   x28
 
#define fp   x29 /* frame pointer */
 
#define lr   x30 /* link register */
 
#define sp   sp /* stack pointer */
 
#define zero   xzr /* zero register */
 
#define fa0   d0 /*argument and result register for SMID & FP */
 
#define fa1   d1
 
#define fa2   d2
 
#define fa3   d3
 
#define fa4   d4
 
#define fa5   d5
 
#define fa6   d6
 
#define fa7   d7
 
#define fs0   d8
 
#define fs1   d9
 
#define fs2   d10
 
#define fs3   d11
 
#define fs4   d12
 
#define fs5   d13
 
#define fs6   d14
 
#define fs7   d15
 
#define ft0   d19
 
#define ft1   d20
 
#define ft2   d21
 
#define ft3   d22
 
#define ft4   d23
 
#define ft5   d24
 
#define ft6   d25
 
#define ft7   d26
 
#define ft8   d27
 
#define ft9   d28
 
#define ft10   d29
 
#define ft11   d30
 
#define ft12   d31
 
#define SAVE_ARGUMENT_REGISTERS
 
#define RESTORE_ARGUMENT_REGISTERS
 
#define SAVE_TEMPORARY_REGISTERS(off)
 
#define RESTORE_TEMPORARY_REGISTERS(off)
 

Macro Definition Documentation

#define a0   x0 /* argument & result registers */

Definition at line 32 of file md-asm.hpp.

#define a1   x1

Definition at line 33 of file md-asm.hpp.

#define a2   x2

Definition at line 34 of file md-asm.hpp.

#define a3   x3

Definition at line 35 of file md-asm.hpp.

#define a4   x4

Definition at line 36 of file md-asm.hpp.

#define a5   x5

Definition at line 37 of file md-asm.hpp.

#define a6   x6

Definition at line 38 of file md-asm.hpp.

#define a7   x7

Definition at line 39 of file md-asm.hpp.

#define fa0   d0 /*argument and result register for SMID & FP */

Definition at line 85 of file md-asm.hpp.

#define fa1   d1

Definition at line 86 of file md-asm.hpp.

#define fa2   d2

Definition at line 87 of file md-asm.hpp.

#define fa3   d3

Definition at line 88 of file md-asm.hpp.

#define fa4   d4

Definition at line 89 of file md-asm.hpp.

#define fa5   d5

Definition at line 90 of file md-asm.hpp.

#define fa6   d6

Definition at line 91 of file md-asm.hpp.

#define fa7   d7

Definition at line 92 of file md-asm.hpp.

#define fp   x29 /* frame pointer */

Definition at line 79 of file md-asm.hpp.

#define fs0   d8

Definition at line 94 of file md-asm.hpp.

#define fs1   d9

Definition at line 95 of file md-asm.hpp.

#define fs2   d10

Definition at line 96 of file md-asm.hpp.

#define fs3   d11

Definition at line 97 of file md-asm.hpp.

#define fs4   d12

Definition at line 98 of file md-asm.hpp.

#define fs5   d13

Definition at line 99 of file md-asm.hpp.

#define fs6   d14

Definition at line 100 of file md-asm.hpp.

#define fs7   d15

Definition at line 101 of file md-asm.hpp.

#define ft0   d19

Definition at line 103 of file md-asm.hpp.

#define ft1   d20

Definition at line 104 of file md-asm.hpp.

#define ft10   d29

Definition at line 113 of file md-asm.hpp.

#define ft11   d30

Definition at line 114 of file md-asm.hpp.

#define ft12   d31

Definition at line 115 of file md-asm.hpp.

#define ft2   d21

Definition at line 105 of file md-asm.hpp.

#define ft3   d22

Definition at line 106 of file md-asm.hpp.

#define ft4   d23

Definition at line 107 of file md-asm.hpp.

#define ft5   d24

Definition at line 108 of file md-asm.hpp.

#define ft6   d25

Definition at line 109 of file md-asm.hpp.

#define ft7   d26

Definition at line 110 of file md-asm.hpp.

#define ft8   d27

Definition at line 111 of file md-asm.hpp.

#define ft9   d28

Definition at line 112 of file md-asm.hpp.

#define ip0   x16 /* intra-procedure-call temporary registers */

Definition at line 60 of file md-asm.hpp.

#define ip1   x17

Definition at line 61 of file md-asm.hpp.

#define ires   x8 /* indirect result location (structs) */

Definition at line 41 of file md-asm.hpp.

#define itmp1   x9

Definition at line 53 of file md-asm.hpp.

#define itmp2   x10

Definition at line 54 of file md-asm.hpp.

#define itmp3   x11

Definition at line 55 of file md-asm.hpp.

#define lr   x30 /* link register */

Definition at line 80 of file md-asm.hpp.

#define mptr   x10 /* using itmp2 for method pointer */

Definition at line 66 of file md-asm.hpp.

#define platf   x18 /* platform register (for platf-specific ABI) */

Definition at line 63 of file md-asm.hpp.

#define pv   x18 /* using platf for procedure vector */

Definition at line 65 of file md-asm.hpp.

#define RESTORE_ARGUMENT_REGISTERS
Value:
ldr a0, [sp] ; \
ldr a1, [sp, 1 * 8] ; \
ldr a2, [sp, 2 * 8] ; \
ldr a3, [sp, 3 * 8] ; \
ldr a4, [sp, 4 * 8] ; \
ldr a5, [sp, 5 * 8] ; \
ldr a6, [sp, 6 * 8] ; \
ldr a7, [sp, 7 * 8] ; \
\
ldr fa0, [sp, 8 * 8] ; \
ldr fa1, [sp, 9 * 8] ; \
ldr fa2, [sp, 10 * 8] ; \
ldr fa3, [sp, 11 * 8] ; \
ldr fa4, [sp, 12 * 8] ; \
ldr fa5, [sp, 13 * 8] ; \
ldr fa6, [sp, 14 * 8] ; \
ldr fa7, [sp, 15 * 8] ;
#define a5
Definition: md-asm.hpp:37
#define a4
Definition: md-asm.hpp:36
#define fa5
Definition: md-asm.hpp:90
#define fa3
Definition: md-asm.hpp:88
#define a7
Definition: md-asm.hpp:39
#define fa0
Definition: md-asm.hpp:85
#define fa7
Definition: md-asm.hpp:92
#define a0
Definition: md-asm.hpp:32
#define a1
Definition: md-asm.hpp:33
#define a6
Definition: md-asm.hpp:38
#define fa6
Definition: md-asm.hpp:91
#define fa2
Definition: md-asm.hpp:87
#define a3
Definition: md-asm.hpp:35
#define a2
Definition: md-asm.hpp:34
#define fa1
Definition: md-asm.hpp:86
#define sp
Definition: md-asm.hpp:81
#define fa4
Definition: md-asm.hpp:89

Definition at line 138 of file md-asm.hpp.

#define RESTORE_TEMPORARY_REGISTERS (   off)
Value:
ldr t0, [sp, (0 + (off)) * 8] ; \
ldr t1, [sp, (1 + (off)) * 8] ; \
ldr t2, [sp, (2 + (off)) * 8] ; \
ldr t3, [sp, (3 + (off)) * 8] ; \
ldr t3, [sp, (4 + (off)) * 8] ; \
ldr t3, [sp, (5 + (off)) * 8] ; \
\
ldr ft0, [sp, (6 + (off)) * 8] ; \
ldr ft1, [sp, (7 + (off)) * 8] ; \
ldr ft2, [sp, (8 + (off)) * 8] ; \
ldr ft3, [sp, (9 + (off)) * 8] ; \
ldr ft4, [sp, (10 + (off)) * 8] ; \
ldr ft5, [sp, (11 + (off)) * 8] ; \
ldr ft6, [sp, (12 + (off)) * 8] ; \
ldr ft7, [sp, (13 + (off)) * 8] ; \
ldr ft8, [sp, (14 + (off)) * 8] ; \
ldr ft9, [sp, (15 + (off)) * 8] ; \
ldr ft10, [sp, (16 + (off)) * 8] ; \
ldr ft11, [sp, (17 + (off)) * 8] ; \
ldr ft12, [sp, (18 + (off)) * 8] ; \
#define ft12
Definition: md-asm.hpp:115
#define t0
Definition: md-asm.hpp:43
#define ft2
Definition: md-asm.hpp:105
#define t2
Definition: md-asm.hpp:45
#define ft11
Definition: md-asm.hpp:114
#define ft6
Definition: md-asm.hpp:109
#define ft0
Definition: md-asm.hpp:103
#define ft3
Definition: md-asm.hpp:106
#define t1
Definition: md-asm.hpp:44
#define ft1
Definition: md-asm.hpp:104
#define ft10
Definition: md-asm.hpp:113
#define ft9
Definition: md-asm.hpp:112
#define t3
Definition: md-asm.hpp:46
#define sp
Definition: md-asm.hpp:81
#define ft7
Definition: md-asm.hpp:110
#define ft8
Definition: md-asm.hpp:111
#define ft5
Definition: md-asm.hpp:108
#define ft4
Definition: md-asm.hpp:107

Definition at line 179 of file md-asm.hpp.

#define s0   x19 /* variable registers, all following registers are callee saved reg */

Definition at line 68 of file md-asm.hpp.

#define s1   x20

Definition at line 69 of file md-asm.hpp.

#define s2   x21

Definition at line 70 of file md-asm.hpp.

#define s3   x22

Definition at line 71 of file md-asm.hpp.

#define s4   x23

Definition at line 72 of file md-asm.hpp.

#define s5   x24

Definition at line 73 of file md-asm.hpp.

#define s6   x25

Definition at line 74 of file md-asm.hpp.

#define s7   x26

Definition at line 75 of file md-asm.hpp.

#define s8   x27

Definition at line 76 of file md-asm.hpp.

#define s9   x28

Definition at line 77 of file md-asm.hpp.

#define SAVE_ARGUMENT_REGISTERS
Value:
str a0, [sp] ; \
str a1, [sp, 1 * 8] ; \
str a2, [sp, 2 * 8] ; \
str a3, [sp, 3 * 8] ; \
str a4, [sp, 4 * 8] ; \
str a5, [sp, 5 * 8] ; \
str a6, [sp, 6 * 8] ; \
str a7, [sp, 7 * 8] ; \
\
str fa0, [sp, 8 * 8] ; \
str fa1, [sp, 9 * 8] ; \
str fa2, [sp, 10 * 8] ; \
str fa3, [sp, 11 * 8] ; \
str fa4, [sp, 12 * 8] ; \
str fa5, [sp, 13 * 8] ; \
str fa6, [sp, 14 * 8] ; \
str fa7, [sp, 15 * 8] ;
#define a5
Definition: md-asm.hpp:37
#define a4
Definition: md-asm.hpp:36
#define fa5
Definition: md-asm.hpp:90
#define fa3
Definition: md-asm.hpp:88
#define a7
Definition: md-asm.hpp:39
#define fa0
Definition: md-asm.hpp:85
#define fa7
Definition: md-asm.hpp:92
#define a0
Definition: md-asm.hpp:32
#define a1
Definition: md-asm.hpp:33
#define a6
Definition: md-asm.hpp:38
#define fa6
Definition: md-asm.hpp:91
#define fa2
Definition: md-asm.hpp:87
#define a3
Definition: md-asm.hpp:35
#define a2
Definition: md-asm.hpp:34
#define fa1
Definition: md-asm.hpp:86
#define sp
Definition: md-asm.hpp:81
#define str(x)
#define fa4
Definition: md-asm.hpp:89

Definition at line 119 of file md-asm.hpp.

#define SAVE_TEMPORARY_REGISTERS (   off)
Value:
str t0, [sp, (0 + (off)) * 8] ; \
str t1, [sp, (1 + (off)) * 8] ; \
str t2, [sp, (2 + (off)) * 8] ; \
str t3, [sp, (3 + (off)) * 8] ; \
str t4, [sp, (4 + (off)) * 8] ; \
str t5, [sp, (5 + (off)) * 8] ; \
\
str ft0, [sp, (6 + (off)) * 8] ; \
str ft1, [sp, (7 + (off)) * 8] ; \
str ft2, [sp, (8 + (off)) * 8] ; \
str ft3, [sp, (9 + (off)) * 8] ; \
str ft4, [sp, (10 + (off)) * 8] ; \
str ft5, [sp, (11 + (off)) * 8] ; \
str ft6, [sp, (12 + (off)) * 8] ; \
str ft7, [sp, (13 + (off)) * 8] ; \
str ft8, [sp, (14 + (off)) * 8] ; \
str ft9, [sp, (15 + (off)) * 8] ; \
str ft10, [sp, (16 + (off)) * 8] ; \
str ft11, [sp, (17 + (off)) * 8] ; \
str ft12, [sp, (18 + (off)) * 8] ; \
#define ft12
Definition: md-asm.hpp:115
#define t0
Definition: md-asm.hpp:43
#define ft2
Definition: md-asm.hpp:105
#define t2
Definition: md-asm.hpp:45
#define ft11
Definition: md-asm.hpp:114
#define ft6
Definition: md-asm.hpp:109
#define ft0
Definition: md-asm.hpp:103
#define ft3
Definition: md-asm.hpp:106
#define t1
Definition: md-asm.hpp:44
#define ft1
Definition: md-asm.hpp:104
#define ft10
Definition: md-asm.hpp:113
#define ft9
Definition: md-asm.hpp:112
#define t3
Definition: md-asm.hpp:46
#define t5
Definition: md-asm.hpp:48
#define sp
Definition: md-asm.hpp:81
#define ft7
Definition: md-asm.hpp:110
#define t4
Definition: md-asm.hpp:47
#define ft8
Definition: md-asm.hpp:111
#define ft5
Definition: md-asm.hpp:108
#define ft4
Definition: md-asm.hpp:107
#define str(x)

Definition at line 157 of file md-asm.hpp.

#define sp   sp /* stack pointer */

Definition at line 81 of file md-asm.hpp.

#define t0   x12 /* temporary registers */

Definition at line 43 of file md-asm.hpp.

#define t0i   w12

Definition at line 57 of file md-asm.hpp.

#define t1   x13

Definition at line 44 of file md-asm.hpp.

#define t1i   w13

Definition at line 58 of file md-asm.hpp.

#define t2   x14

Definition at line 45 of file md-asm.hpp.

#define t3   x15

Definition at line 46 of file md-asm.hpp.

#define t4   x16

Definition at line 47 of file md-asm.hpp.

#define t5   x17

Definition at line 48 of file md-asm.hpp.

#define xpc   x10 /* exception pc = itmp2 */

Definition at line 51 of file md-asm.hpp.

#define xptr   x9 /* exception pointer = itmp1 */

Definition at line 50 of file md-asm.hpp.

#define zero   xzr /* zero register */

Definition at line 83 of file md-asm.hpp.