1 /*
2  * Copyright (C) 2012-2019  Free Software Foundation, Inc.
3  *
4  * This file is part of GNU lightning.
5  *
6  * GNU lightning is free software; you can redistribute it and/or modify it
7  * under the terms of the GNU Lesser General Public License as published
8  * by the Free Software Foundation; either version 3, or (at your option)
9  * any later version.
10  *
11  * GNU lightning is distributed in the hope that it will be useful, but
12  * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
13  * or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU Lesser General Public
14  * License for more details.
15  *
16  * Authors:
17  *	Paulo Cesar Pereira de Andrade
18  */
19 
20 #ifndef _jit_ppc_h
21 #define _jit_ppc_h
22 
23 #define JIT_HASH_CONSTS		1
24 #define JIT_NUM_OPERANDS	3
25 
26 /*
27  * Types
28  */
29 typedef enum {
30 #define jit_r(i)		(_R28 + (i))
31 #define jit_r_num()		3
32 #define jit_v(i)		(_R27 - (i))
33 #define jit_v_num()		14
34 #define jit_f(i)		(_F14 + (i))
35 #define jit_f_num()		8
36     _R0,
37 #define JIT_R0			_R28
38 #define JIT_R1			_R29
39 #define JIT_R2			_R30
40     _R11,	_R12,	_R13,	_R2,
41 #define JIT_V0			jit_v(0)
42 #define JIT_V1			jit_v(1)
43 #define JIT_V2			jit_v(2)
44 #define JIT_V3			jit_v(3)
45 #define JIT_V4			jit_v(4)
46 #define JIT_V5			jit_v(5)
47 #define JIT_V6			jit_v(6)
48 #define JIT_V7			jit_v(7)
49 #define JIT_V8			jit_v(8)
50 #define JIT_V9			jit_v(9)
51 #define JIT_V10			jit_v(10)
52 #define JIT_V11			jit_v(11)
53 #define JIT_V12			jit_v(12)
54 #define JIT_V13			jit_v(13)
55     _R14,	_R15,	_R16,	_R17,	_R18,	_R19,	_R20,	_R21,
56     _R22,	_R23,	_R24,	_R25,	_R26,	_R27,	_R28,	_R29,
57     _R30,
58     _R1,
59 #define JIT_FP			_R31
60     _R31,
61     _R10,	_R9,	_R8,	_R7,	_R6,	_R5,	_R4,	_R3,
62     _F0,
63     _F14,	_F15,	_F16,	_F17,	_F18,	_F19,	_F20,	_F21,
64 #define JIT_F0			_F14
65 #define JIT_F1			_F15
66 #define JIT_F2			_F16
67 #define JIT_F3			_F17
68 #define JIT_F4			_F18
69 #define JIT_F5			_F19
70 #define JIT_F6			_F20
71 #define JIT_F7			_F21
72     /* FIXME _F20-_F31 not (easily) accessible and only _F14-_F21
73      * saved/restored (if used) */
74     _F22,	_F23,	_F24,	_F25,	_F26,	_F27,	_F28,	_F29,
75     _F30,	_F31,
76     _F13,	_F12,	_F11,	_F10,	_F9,	_F8,	_F7,	_F6,
77     _F5,	_F4,	_F3,	_F2,	_F1,
78     _NOREG,
79 #define JIT_NOREG		_NOREG
80 } jit_reg_t;
81 
82 #endif /* _jit_ppc_h */
83