--- uae/src/md-i386-gcc/m68k.h 2018/04/24 16:39:33 1.1 +++ uae/src/md-i386-gcc/m68k.h 2018/04/24 16:40:31 1.1.1.2 @@ -51,3 +51,93 @@ static __inline__ int cctrue(const int c return 0; } +#define x86_flag_testl(v) \ + __asm__ __volatile__ ("testl %1,%1\n\t" \ + "pushfl\n\t" \ + "popl %0\n\t" \ + "movl %0,regflags\n" \ + : "=r" (scratch) : "r" (v) : "cc") + +#define x86_flag_testw(v) \ + __asm__ __volatile__ ("testw %w1,%w1\n\t" \ + "pushfl\n\t" \ + "popl %0\n\t" \ + "movl %0,regflags\n" \ + : "=r" (scratch) : "r" (v) : "cc") + +#define x86_flag_testb(v) \ + __asm__ __volatile__ ("testb %b1,%b1\n\t" \ + "pushfl\n\t" \ + "popl %0\n\t" \ + "movl %0,regflags\n" \ + : "=r" (scratch) : "q" (v) : "cc") + +#define x86_flag_addl(v, s, d) \ + __asm__ __volatile__ ("addl %k2,%k1\n\t" \ + "pushfl\n\t" \ + "popl %0\n\t" \ + "movl %0,regflags\n\t" \ + "movl %0,regflags+4\n" \ + : "=r" (scratch), "=r" (v) : "rmi" (s), "1" (d) : "cc") + +#define x86_flag_addw(v, s, d) \ + __asm__ __volatile__ ("addw %w2,%w1\n\t" \ + "pushfl\n\t" \ + "popl %0\n\t" \ + "movl %0,regflags\n\t" \ + "movl %0,regflags+4\n" \ + : "=r" (scratch), "=r" (v) : "rmi" (s), "1" (d) : "cc") + +#define x86_flag_addb(v, s, d) \ + __asm__ __volatile__ ("addb %b2,%b1\n\t" \ + "pushfl\n\t" \ + "popl %0\n\t" \ + "movl %0,regflags\n\t" \ + "movl %0,regflags+4\n" \ + : "=r" (scratch), "=q" (v) : "qmi" (s), "1" (d) : "cc") + +#define x86_flag_subl(v, s, d) \ + __asm__ __volatile__ ("subl %k2,%k1\n\t" \ + "pushfl\n\t" \ + "popl %0\n\t" \ + "movl %0,regflags\n\t" \ + "movl %0,regflags+4\n" \ + : "=r" (scratch), "=r" (v) : "rmi" (s), "1" (d) : "cc") + +#define x86_flag_subw(v, s, d) \ + __asm__ __volatile__ ("subw %w2,%w1\n\t" \ + "pushfl\n\t" \ + "popl %0\n\t" \ + "movl %0,regflags\n\t" \ + "movl %0,regflags+4\n" \ + : "=r" (scratch), "=r" (v) : "rmi" (s), "1" (d) : "cc") + +#define x86_flag_subb(v, s, d) \ + __asm__ __volatile__ ("subb %b2,%b1\n\t" \ + "pushfl\n\t" \ + "popl %0\n\t" \ + "movl %0,regflags\n\t" \ + "movl %0,regflags+4\n" \ + : "=r" (scratch), "=q" (v) : "qmi" (s), "1" (d) : "cc") + +#define x86_flag_cmpl(s, d) \ + __asm__ __volatile__ ("cmpl %k1,%k2\n\t" \ + "pushfl\n\t" \ + "popl %0\n\t" \ + "movl %0,regflags\n" \ + : "=r" (scratch) : "rmi" (s), "r" (d) : "cc") + +#define x86_flag_cmpw(s, d) \ + __asm__ __volatile__ ("cmpw %w1,%w2\n\t" \ + "pushfl\n\t" \ + "popl %0\n\t" \ + "movl %0,regflags\n" \ + : "=r" (scratch) : "rmi" (s), "r" (d) : "cc") + +#define x86_flag_cmpb(s, d) \ + __asm__ __volatile__ ("cmpb %b1,%b2\n\t" \ + "pushfl\n\t" \ + "popl %0\n\t" \ + "movl %0,regflags\n" \ + : "=r" (scratch) : "qmi" (s), "q" (d) : "cc") +