Statistics
| Branch: | Revision:

root / target-m68k / op-hacks.h @ e6e5906b

History | View | Annotate | Download (1.5 kB)

1
/* Various hacks to make code written for a dynamic code generator work
2
   with regular QEMU.  */
3

    
4
static int free_qreg;
5

    
6
#define QMODE_I32 1
7
#define QMODE_F32 1
8
#define QMODE_F64 2
9

    
10
static inline int gen_new_qreg(int mode)
11
{
12
    int qreg;
13

    
14
    qreg = free_qreg;
15
    free_qreg += mode;
16
    if (free_qreg > MAX_QREGS) {
17
        fprintf(stderr, "qreg overflow\n");
18
        abort();
19
    }
20
    return qreg + TARGET_NUM_QREGS;
21
}
22

    
23
static inline int gen_im32(uint32_t i)
24
{
25
    int qreg = gen_new_qreg(QMODE_I32);
26
    gen_op_mov32_im(qreg, i);
27
    return qreg;
28
}
29

    
30
static inline void gen_op_ldf32(int dest, int addr)
31
{
32
    gen_op_ld32(dest, addr);
33
}
34

    
35
static inline void gen_op_stf32(int addr, int dest)
36
{
37
    gen_op_st32(addr, dest);
38
}
39

    
40
static inline void gen_op_pack_32_f32(int dest, int src)
41
{
42
    gen_op_mov32(dest, src);
43
}
44

    
45
static inline void gen_op_pack_f32_32(int dest, int src)
46
{
47
    gen_op_mov32(dest, src);
48
}
49

    
50
static inline void gen_op_flags_set(void)
51
{
52
    /* Dummy op.  */
53
}
54

    
55
static inline void gen_op_shl_im_cc(int val, int shift)
56
{
57
    gen_op_shl_cc(val, gen_im32(shift));
58
}
59

    
60
static inline void gen_op_shr_im_cc(int val, int shift)
61
{
62
    gen_op_shr_cc(val, gen_im32(shift));
63
}
64

    
65
static inline void gen_op_sar_im_cc(int val, int shift)
66
{
67
    gen_op_sar_cc(val, gen_im32(shift));
68
}
69

    
70
#ifdef USE_DIRECT_JUMP
71
#define TBPARAM(x)
72
#else
73
#define TBPARAM(x) (long)(x)
74
#endif
75

    
76
static inline void gen_op_goto_tb(int dummy, int n, long tb)
77
{
78
    if (n == 0) {
79
        gen_op_goto_tb0(TBPARAM(tb));
80
    } else {
81
        gen_op_goto_tb1(TBPARAM(tb));
82
    }
83
}