Pristine Ack-5.5
[Ack-5.5.git] / mach / sparc / ce / push_pop.h
1 /*
2 push_pop.h
3 */
4
5 #ifndef PUSH_POP_H
6 #define PUSH_POP_H
7
8 #include "back.h"
9
10 #define NR_REGS 64
11
12 typedef char *reg_t;
13
14 typedef struct cache_elt {
15         reg_t   reg, reg2;
16         char    *ext;
17         arith   cst;
18 } cache_elt;
19
20 #define T_cst   1
21 #define T_ext   2
22 #define T_reg   4
23 #define T_float 8
24 #define T_reg2  16
25 #define T_float2 32
26
27 typedef char const_str_t[NR_REGS];
28
29 extern reg_t reg_g0, reg_g1, reg_g2, reg_g3, reg_g4, reg_g5, reg_g6, reg_g7;
30 extern reg_t reg_i0, reg_i1, reg_i2, reg_i3, reg_i4, reg_i5, reg_i6, reg_i7;
31 extern reg_t reg_l0, reg_l1, reg_l2, reg_l3, reg_l4, reg_l5, reg_l6, reg_l7;
32 extern reg_t reg_o0, reg_o1, reg_o2, reg_o3, reg_o4, reg_o5, reg_o6, reg_o7;
33 extern reg_t reg_f0;
34 extern reg_t reg_sp, reg_lb, reg_gap;
35 extern reg_t reg_tmp;
36
37 #include "ansi.h"
38
39 _PROTOTYPE(int const13, (int));
40 _PROTOTYPE(void init_cache, (void));
41 _PROTOTYPE(void free_reg, (reg_t));
42 _PROTOTYPE(void free_double, (reg_t));  /* ..._reg */
43 _PROTOTYPE(void forced_alloc_reg, (reg_t));
44 _PROTOTYPE(void soft_alloc_reg, (reg_t));
45 _PROTOTYPE(void change_reg, (reg_t));
46 _PROTOTYPE(int type_of_tos, (void));
47 _PROTOTYPE(void inc_tos, (arith));
48 _PROTOTYPE(void inc_tos_reg, (reg_t));
49 _PROTOTYPE(void push_const, (arith));
50 _PROTOTYPE(void push_reg, (reg_t));
51 _PROTOTYPE(void push_ext, (char *));
52 _PROTOTYPE(void flush_cache, (void));
53 _PROTOTYPE(void cache_need, (int));
54 _PROTOTYPE(void pop_nop, (int));
55
56 _PROTOTYPE(reg_t alloc_reg, (void));
57 _PROTOTYPE(reg_t alloc_reg_var, (void));
58 _PROTOTYPE(reg_t alloc_float, (void));
59 _PROTOTYPE(reg_t alloc_float_var, (void));
60 _PROTOTYPE(reg_t alloc_double, (reg_t *sub_reg));
61 _PROTOTYPE(reg_t alloc_double_var, (reg_t *sub_reg));
62 _PROTOTYPE(reg_t pop_reg, (void));
63 _PROTOTYPE(reg_t pop_reg_c13, (char*));
64 _PROTOTYPE(reg_t pop_reg_reg, (reg_t*));
65 _PROTOTYPE(reg_t pop_float, (void));
66 _PROTOTYPE(reg_t pop_double, (reg_t *sub_reg));
67 _PROTOTYPE(void pop_reg_as, (reg_t r));
68
69 _PROTOTYPE(arith pop_const, (char *n_str));
70 _PROTOTYPE(arith top_const, (void));
71 _PROTOTYPE(void dup_tos, (int n));
72 _PROTOTYPE(void exg_top, (int n));
73
74 #define code_combiner(x) x
75
76 #endif /* PUSH_POP_H */