summaryrefslogtreecommitdiffstats
path: root/usr/include/arch/mips64/machine/asm.h
blob: 42dcaa4f44d9d36128272e2f356e1358ec897ee7 (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
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
/*
 * arch/mips64/include/machine/asm.h
 */

#ifndef _MACHINE_ASM_H
#define _MACHINE_ASM_H

/*
 * Symbolic register names for 64 bit ABI
 */


#define zero    $0      /* wired zero */
#define AT      $at     /* assembler temp - uppercase because of ".set at" */
#define v0      $2      /* return value - caller saved */
#define v1      $3
#define a0      $4      /* argument registers */
#define a1      $5
#define a2      $6
#define a3      $7
#define a4      $8      /* arg reg 64 bit; caller saved in 32 bit */
#define ta0     $8
#define a5      $9
#define ta1     $9
#define a6      $10
#define ta2     $10
#define a7      $11
#define ta3     $11
#define t4      $12     /* caller saved */
#define t5      $13
#define t6      $14
#define t7      $15
#define s0      $16     /* callee saved */
#define s1      $17
#define s2      $18
#define s3      $19
#define s4      $20
#define s5      $21
#define s6      $22
#define s7      $23
#define t8      $24     /* caller saved */
#define t9      $25     /* callee address for PIC/temp */
#define jp      $25     /* PIC jump register */
#define k0      $26     /* kernel temporary */
#define k1      $27
#define gp      $28     /* global pointer - caller saved for PIC */
#define sp      $29     /* stack pointer */
#define fp      $30     /* frame pointer */
#define s8      $30     /* callee saved */
#define ra      $31     /* return address */


/*
 * LEAF - declare leaf routine
 */
#define LEAF(symbol)                                    \
		.globl  symbol;                         \
		.align  2;                              \
		.type   symbol,@function;               \
		.ent    symbol,0;                       \
symbol:		.frame  sp,0,ra


/*
 * NESTED - declare nested routine entry point
 */
#define NESTED(symbol, framesize, rpc)                  \
		.globl  symbol;                         \
		.align  2;                              \
		.type   symbol,@function;               \
		.ent    symbol,0;                       \
symbol:		.frame  sp, framesize, rpc

/*
 * END - mark end of function
 */
#define END(function)                                   \
		.end    function;                       \
		.size   function,.-function


#endif				/* _MACHINE_ASM_H */