Annotation of uae/src/md-i386-gcc/m68k.h, revision 1.1.1.2

1.1       root        1:  /* 
                      2:   * UAE - The Un*x Amiga Emulator
                      3:   * 
                      4:   * MC68000 emulation - machine dependent bits
                      5:   *
                      6:   * Copyright 1996 Bernd Schmidt
                      7:   */
                      8: 
                      9:  
                     10: struct flag_struct {
                     11:     unsigned int c:1; /* first byte */
                     12:     int :5;
                     13:     unsigned int z:1;
                     14:     unsigned int n:1;
                     15:     int :3;           /* second, third & fourth byte */
                     16:     unsigned int v:1; 
                     17:     int :20;
                     18:     unsigned int x:1; /* fifth */
                     19:     int :31;
                     20: };
                     21: 
                     22: extern struct flag_struct regflags __asm__ ("regflags");
                     23: 
                     24: #define ZFLG (regflags.z)
                     25: #define NFLG (regflags.n)
                     26: #define CFLG (regflags.c)
                     27: #define VFLG (regflags.v)
                     28: #define XFLG (regflags.x)
                     29: 
                     30: static __inline__ int cctrue(const int cc)
                     31: {
                     32:     switch(cc){
                     33:      case 0: return 1;                       /* T */
                     34:      case 1: return 0;                       /* F */
                     35:      case 2: return !CFLG && !ZFLG;          /* HI */
                     36:      case 3: return CFLG || ZFLG;            /* LS */
                     37:      case 4: return !CFLG;                   /* CC */
                     38:      case 5: return CFLG;                    /* CS */
                     39:      case 6: return !ZFLG;                   /* NE */
                     40:      case 7: return ZFLG;                    /* EQ */
                     41:      case 8: return !VFLG;                   /* VC */
                     42:      case 9: return VFLG;                    /* VS */
                     43:      case 10:return !NFLG;                   /* PL */
                     44:      case 11:return NFLG;                    /* MI */
                     45:      case 12:return NFLG == VFLG;            /* GE */
                     46:      case 13:return NFLG != VFLG;            /* LT */
                     47:      case 14:return !ZFLG && (NFLG == VFLG); /* GT */
                     48:      case 15:return ZFLG || (NFLG != VFLG);  /* LE */
                     49:     }
                     50:     abort();
                     51:     return 0;
                     52: }
                     53: 
1.1.1.2 ! root       54: #define x86_flag_testl(v) \
        !            55:   __asm__ __volatile__ ("testl %1,%1\n\t" \
        !            56:                        "pushfl\n\t" \
        !            57:                        "popl %0\n\t" \
        !            58:                        "movl %0,regflags\n" \
        !            59:                        : "=r" (scratch) : "r" (v) : "cc")
        !            60: 
        !            61: #define x86_flag_testw(v) \
        !            62:   __asm__ __volatile__ ("testw %w1,%w1\n\t" \
        !            63:                        "pushfl\n\t" \
        !            64:                        "popl %0\n\t" \
        !            65:                        "movl %0,regflags\n" \
        !            66:                        : "=r" (scratch) : "r" (v) : "cc")
        !            67: 
        !            68: #define x86_flag_testb(v) \
        !            69:   __asm__ __volatile__ ("testb %b1,%b1\n\t" \
        !            70:                        "pushfl\n\t" \
        !            71:                        "popl %0\n\t" \
        !            72:                        "movl %0,regflags\n" \
        !            73:                        : "=r" (scratch) : "q" (v) : "cc")
        !            74: 
        !            75: #define x86_flag_addl(v, s, d) \
        !            76:   __asm__ __volatile__ ("addl %k2,%k1\n\t" \
        !            77:                        "pushfl\n\t" \
        !            78:                        "popl %0\n\t" \
        !            79:                        "movl %0,regflags\n\t" \
        !            80:                        "movl %0,regflags+4\n" \
        !            81:                        : "=r" (scratch), "=r" (v) : "rmi" (s), "1" (d) : "cc")
        !            82: 
        !            83: #define x86_flag_addw(v, s, d) \
        !            84:   __asm__ __volatile__ ("addw %w2,%w1\n\t" \
        !            85:                        "pushfl\n\t" \
        !            86:                        "popl %0\n\t" \
        !            87:                        "movl %0,regflags\n\t" \
        !            88:                        "movl %0,regflags+4\n" \
        !            89:                        : "=r" (scratch), "=r" (v) : "rmi" (s), "1" (d) : "cc")
        !            90: 
        !            91: #define x86_flag_addb(v, s, d) \
        !            92:   __asm__ __volatile__ ("addb %b2,%b1\n\t" \
        !            93:                        "pushfl\n\t" \
        !            94:                        "popl %0\n\t" \
        !            95:                        "movl %0,regflags\n\t" \
        !            96:                        "movl %0,regflags+4\n" \
        !            97:                        : "=r" (scratch), "=q" (v) : "qmi" (s), "1" (d) : "cc")
        !            98: 
        !            99: #define x86_flag_subl(v, s, d) \
        !           100:   __asm__ __volatile__ ("subl %k2,%k1\n\t" \
        !           101:                        "pushfl\n\t" \
        !           102:                        "popl %0\n\t" \
        !           103:                        "movl %0,regflags\n\t" \
        !           104:                        "movl %0,regflags+4\n" \
        !           105:                        : "=r" (scratch), "=r" (v) : "rmi" (s), "1" (d) : "cc")
        !           106: 
        !           107: #define x86_flag_subw(v, s, d) \
        !           108:   __asm__ __volatile__ ("subw %w2,%w1\n\t" \
        !           109:                        "pushfl\n\t" \
        !           110:                        "popl %0\n\t" \
        !           111:                        "movl %0,regflags\n\t" \
        !           112:                        "movl %0,regflags+4\n" \
        !           113:                        : "=r" (scratch), "=r" (v) : "rmi" (s), "1" (d) : "cc")
        !           114: 
        !           115: #define x86_flag_subb(v, s, d) \
        !           116:   __asm__ __volatile__ ("subb %b2,%b1\n\t" \
        !           117:                        "pushfl\n\t" \
        !           118:                        "popl %0\n\t" \
        !           119:                        "movl %0,regflags\n\t" \
        !           120:                        "movl %0,regflags+4\n" \
        !           121:                        : "=r" (scratch), "=q" (v) : "qmi" (s), "1" (d) : "cc")
        !           122: 
        !           123: #define x86_flag_cmpl(s, d) \
        !           124:   __asm__ __volatile__ ("cmpl %k1,%k2\n\t" \
        !           125:                        "pushfl\n\t" \
        !           126:                        "popl %0\n\t" \
        !           127:                        "movl %0,regflags\n" \
        !           128:                        : "=r" (scratch) : "rmi" (s), "r" (d) : "cc")
        !           129: 
        !           130: #define x86_flag_cmpw(s, d) \
        !           131:   __asm__ __volatile__ ("cmpw %w1,%w2\n\t" \
        !           132:                        "pushfl\n\t" \
        !           133:                        "popl %0\n\t" \
        !           134:                        "movl %0,regflags\n" \
        !           135:                        : "=r" (scratch) : "rmi" (s), "r" (d) : "cc")
        !           136: 
        !           137: #define x86_flag_cmpb(s, d) \
        !           138:   __asm__ __volatile__ ("cmpb %b1,%b2\n\t" \
        !           139:                        "pushfl\n\t" \
        !           140:                        "popl %0\n\t" \
        !           141:                        "movl %0,regflags\n" \
        !           142:                        : "=r" (scratch) : "qmi" (s), "q" (d) : "cc")
        !           143: 

unix.superglobalmegacorp.com

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