Hello community,

here is the log from the commit of package libx86emu for openSUSE:Factory 
checked in at 2019-03-26 15:35:37
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/libx86emu (Old)
 and      /work/SRC/openSUSE:Factory/.libx86emu.new.25356 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "libx86emu"

Tue Mar 26 15:35:37 2019 rev:26 rq:687301 version:2.2

Changes:
--------
--- /work/SRC/openSUSE:Factory/libx86emu/libx86emu.changes      2019-02-08 
13:47:09.422802515 +0100
+++ /work/SRC/openSUSE:Factory/.libx86emu.new.25356/libx86emu.changes   
2019-03-26 15:35:40.260416159 +0100
@@ -0,0 +1,9 @@
+--------------------------------------------------------------------
+Thu Mar 21 11:45:15 UTC 2019 - [email protected]
+
+- merge gh#wfeldt/libx86emu#14
+- ops2: Add support for conditional move
+- ops2: Implement bswap
+- Add additional ops2 instructions
+- 2.2
+

Old:
----
  libx86emu-2.1.tar.xz

New:
----
  libx86emu-2.2.tar.xz

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ libx86emu.spec ++++++
--- /var/tmp/diff_new_pack.9YIAZC/_old  2019-03-26 15:35:40.880415899 +0100
+++ /var/tmp/diff_new_pack.9YIAZC/_new  2019-03-26 15:35:40.884415897 +0100
@@ -22,7 +22,7 @@
 Summary:        An x86 emulation library
 License:        BSD-3-Clause
 Group:          Development/Libraries/C and C++
-Version:        2.1
+Version:        2.2
 Release:        0
 Source:         %{name}-%{version}.tar.xz
 Url:            https://github.com/wfeldt/libx86emu

++++++ libx86emu-2.1.tar.xz -> libx86emu-2.2.tar.xz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libx86emu-2.1/VERSION new/libx86emu-2.2/VERSION
--- old/libx86emu-2.1/VERSION   2018-08-30 15:31:45.000000000 +0200
+++ new/libx86emu-2.2/VERSION   2019-03-21 12:45:15.000000000 +0100
@@ -1 +1 @@
-2.1
+2.2
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libx86emu-2.1/changelog new/libx86emu-2.2/changelog
--- old/libx86emu-2.1/changelog 2018-08-30 15:31:45.000000000 +0200
+++ new/libx86emu-2.2/changelog 2019-03-21 12:45:15.000000000 +0100
@@ -1,3 +1,8 @@
+2019-03-21:    2.2
+       - merge gh#wfeldt/libx86emu#14
+       - ops2: Add support for conditional move
+       - ops2: Implement bswap
+
 2018-08-30:    2.1
        - merge gh#wfeldt/libx86emu#13
        - Fix README.md header typos
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libx86emu-2.1/ops2.c new/libx86emu-2.2/ops2.c
--- old/libx86emu-2.1/ops2.c    2018-08-30 15:31:45.000000000 +0200
+++ new/libx86emu-2.2/ops2.c    2019-03-21 12:45:15.000000000 +0100
@@ -482,6 +482,121 @@
 
 /****************************************************************************
 REMARKS:
+Handles opcode 0x0f,0x40-0x4f
+****************************************************************************/
+static void x86emuOp2_conditional_move(x86emu_t *emu, u8 op2)
+{
+  int mod, rl, rh, noop = 0;
+  u16 *src16, *dst16;
+  u32 *src32, *dst32, addr;
+
+  OP_DECODE("cmov");
+
+  fetch_decode_modrm(emu, &mod, &rh, &rl);
+
+  switch(op2 & 0xf) {
+    case 0:
+      OP_DECODE("o ");
+      noop = !ACCESS_FLAG(F_OF);
+      break;
+    case 1:
+      OP_DECODE("no ");
+      noop = ACCESS_FLAG(F_OF);
+      break;
+    case 2:
+      OP_DECODE("c ");
+      noop = !ACCESS_FLAG(F_CF);
+      break;
+    case 3:
+      OP_DECODE("nc ");
+      noop = ACCESS_FLAG(F_CF);
+      break;
+    case 4:
+      OP_DECODE("z ");
+      noop = !ACCESS_FLAG(F_ZF);
+      break;
+    case 5:
+      OP_DECODE("nz ");
+      noop = ACCESS_FLAG(F_ZF);
+      break;
+    case 6:
+      OP_DECODE("be ");
+      noop = !ACCESS_FLAG(F_CF) && !ACCESS_FLAG(F_ZF);
+      break;
+    case 7:
+      OP_DECODE("nbe ");
+      noop = ACCESS_FLAG(F_CF) || ACCESS_FLAG(F_ZF);
+      break;
+    case 8:
+      OP_DECODE("s ");
+      noop = !ACCESS_FLAG(F_SF);
+      break;
+    case 9:
+      OP_DECODE("ns ");
+      noop = ACCESS_FLAG(F_SF);
+      break;
+    case 0xa:
+      OP_DECODE("p ");
+      noop = !ACCESS_FLAG(F_PF);
+      break;
+    case 0xb:
+      OP_DECODE("np ");
+      noop = ACCESS_FLAG(F_PF);
+      break;
+    case 0xc:
+      OP_DECODE("l ");
+      noop = ACCESS_FLAG(F_SF) == ACCESS_FLAG(F_OF);
+      break;
+    case 0xd:
+      OP_DECODE("nl ");
+      noop = ACCESS_FLAG(F_SF) != ACCESS_FLAG(F_OF);
+      break;
+    case 0xe:
+      OP_DECODE("le ");
+      noop = !ACCESS_FLAG(F_ZF) && (ACCESS_FLAG(F_SF) == ACCESS_FLAG(F_OF));
+      break;
+    case 0xf:
+      OP_DECODE("nle ");
+      noop = ACCESS_FLAG(F_ZF) || (ACCESS_FLAG(F_SF) != ACCESS_FLAG(F_OF));
+      break;
+  }
+
+  if(mod == 3) {
+    if(MODE_DATA32) {
+      dst32 = decode_rm_long_register(emu, rh);
+      OP_DECODE(",");
+      src32 = decode_rm_long_register(emu, rl);
+      if(!noop)
+        *dst32 = *src32;
+    }
+    else {
+      dst16 = decode_rm_word_register(emu, rh);
+      OP_DECODE(",");
+      src16 = decode_rm_word_register(emu, rl);
+      if(!noop)
+        *dst16 = *src16;
+    }
+  }
+  else {
+    if(MODE_DATA32) {
+      dst32 = decode_rm_long_register(emu, rh);
+      OP_DECODE(",");
+      addr = decode_rm_address(emu, mod, rl);
+      if(!noop)
+        *dst32 = fetch_data_long(emu, addr);
+    }
+    else {
+      dst16 = decode_rm_word_register(emu, rh);
+      OP_DECODE(",");
+      addr = decode_rm_address(emu, mod, rl);
+      if(!noop)
+        *dst16 = fetch_data_word(emu, addr);
+    }
+  }
+}
+
+/****************************************************************************
+REMARKS:
 Handles opcode 0x0f,0x80-0x8F
 ****************************************************************************/
 static void x86emuOp2_long_jump(x86emu_t *emu, u8 op2)
@@ -1619,6 +1734,31 @@
 }
 
 
+/****************************************************************************
+REMARKS:
+Handles opcode 0x0f,0xc8-0xcf
+****************************************************************************/
+static void x86emuOp2_bswap(x86emu_t *emu, u8 op2)
+{
+  u32 *reg32, tmp;
+
+  OP_DECODE("bswap ");
+
+  if(MODE_DATA32) {
+    reg32 = decode_rm_long_register(emu, op2 & 0x7);
+    tmp = 0;
+    tmp |= (*reg32 >> 24) & 0x000000ff;
+    tmp |= (*reg32 >>  8) & 0x0000ff00;
+    tmp |= (*reg32 <<  8) & 0x00ff0000;
+    tmp |= (*reg32 << 24) & 0xff000000;
+
+    *reg32 = tmp;
+  }
+  else {
+    /* undefined. Do nothing */
+  }
+}
+
 /***************************************************************************
  * Double byte operation code table:
  **************************************************************************/
@@ -1692,22 +1832,22 @@
   /*  0x3e */ x86emuOp2_illegal_op,
   /*  0x3f */ x86emuOp2_illegal_op,
 
-  /*  0x40 */ x86emuOp2_illegal_op,
-  /*  0x41 */ x86emuOp2_illegal_op,
-  /*  0x42 */ x86emuOp2_illegal_op,
-  /*  0x43 */ x86emuOp2_illegal_op,
-  /*  0x44 */ x86emuOp2_illegal_op,
-  /*  0x45 */ x86emuOp2_illegal_op,
-  /*  0x46 */ x86emuOp2_illegal_op,
-  /*  0x47 */ x86emuOp2_illegal_op,
-  /*  0x48 */ x86emuOp2_illegal_op,
-  /*  0x49 */ x86emuOp2_illegal_op,
-  /*  0x4a */ x86emuOp2_illegal_op,
-  /*  0x4b */ x86emuOp2_illegal_op,
-  /*  0x4c */ x86emuOp2_illegal_op,
-  /*  0x4d */ x86emuOp2_illegal_op,
-  /*  0x4e */ x86emuOp2_illegal_op,
-  /*  0x4f */ x86emuOp2_illegal_op,
+  /*  0x40 */ x86emuOp2_conditional_move,
+  /*  0x41 */ x86emuOp2_conditional_move,
+  /*  0x42 */ x86emuOp2_conditional_move,
+  /*  0x43 */ x86emuOp2_conditional_move,
+  /*  0x44 */ x86emuOp2_conditional_move,
+  /*  0x45 */ x86emuOp2_conditional_move,
+  /*  0x46 */ x86emuOp2_conditional_move,
+  /*  0x47 */ x86emuOp2_conditional_move,
+  /*  0x48 */ x86emuOp2_conditional_move,
+  /*  0x49 */ x86emuOp2_conditional_move,
+  /*  0x4a */ x86emuOp2_conditional_move,
+  /*  0x4b */ x86emuOp2_conditional_move,
+  /*  0x4c */ x86emuOp2_conditional_move,
+  /*  0x4d */ x86emuOp2_conditional_move,
+  /*  0x4e */ x86emuOp2_conditional_move,
+  /*  0x4f */ x86emuOp2_conditional_move,
 
   /*  0x50 */ x86emuOp2_illegal_op,
   /*  0x51 */ x86emuOp2_illegal_op,
@@ -1836,14 +1976,14 @@
   /*  0xc5 */ x86emuOp2_illegal_op,
   /*  0xc6 */ x86emuOp2_illegal_op,
   /*  0xc7 */ x86emuOp2_illegal_op,
-  /*  0xc8 */ x86emuOp2_illegal_op,  /* TODO: bswap */
-  /*  0xc9 */ x86emuOp2_illegal_op,  /* TODO: bswap */
-  /*  0xca */ x86emuOp2_illegal_op,  /* TODO: bswap */
-  /*  0xcb */ x86emuOp2_illegal_op,  /* TODO: bswap */
-  /*  0xcc */ x86emuOp2_illegal_op,  /* TODO: bswap */
-  /*  0xcd */ x86emuOp2_illegal_op,  /* TODO: bswap */
-  /*  0xce */ x86emuOp2_illegal_op,  /* TODO: bswap */
-  /*  0xcf */ x86emuOp2_illegal_op,  /* TODO: bswap */
+  /*  0xc8 */ x86emuOp2_bswap,
+  /*  0xc9 */ x86emuOp2_bswap,
+  /*  0xca */ x86emuOp2_bswap,
+  /*  0xcb */ x86emuOp2_bswap,
+  /*  0xcc */ x86emuOp2_bswap,
+  /*  0xcd */ x86emuOp2_bswap,
+  /*  0xce */ x86emuOp2_bswap,
+  /*  0xcf */ x86emuOp2_bswap,
 
   /*  0xd0 */ x86emuOp2_illegal_op,
   /*  0xd1 */ x86emuOp2_illegal_op,


Reply via email to