Annotation of qemu/target-m68k/op-hacks.h, revision 1.1.1.1

1.1       root        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: }

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.