summaryrefslogtreecommitdiffstats
path: root/src/abi.inc
blob: 490c4b1ce49bf2e2e9983c5e0b05af25c25330fb (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
#ifndef CEPIS_ABI_INC
#define CEPIS_ABI_INC

.macro FUNC name
        .text
        .globl \name
        .hidden \name
        .type \name, @function
        .p2align 4
\name:
.endm

.macro PUBFUNC name
        .text
        .globl \name
        .type \name, @function
        .p2align 4
\name:
.endm

.macro ENDFUNC name
        .size \name, . - \name
.endm

.macro PROLOGUE n=8
.if (\n % 16) != 8
        .error "PROLOGUE frame size must be congruent to 8 modulo 16"
.endif
        push    %rbp
        mov     %rsp, %rbp
        push    %rbx
        push    %r12
        push    %r13
        push    %r14
        push    %r15
        sub     $\n, %rsp
.endm

.macro EPILOGUE
        lea     -40(%rbp), %rsp
        pop     %r15
        pop     %r14
        pop     %r13
        pop     %r12
        pop     %rbx
        pop     %rbp
.endm

#define LOCAL0  -48
#define LOCAL1  -56
#define LOCAL2  -64
#define LOCAL3  -72
#define LOCAL4  -80
#define LOCAL5  -88
#define LOCAL6  -96
#define LOCAL7  -104

#endif