#define SrcImmByte  (6<<4)     /* 8-bit sign-extended immediate operand. */
 #define SrcOne      (7<<4)     /* Implied '1' */
 #define SrcImmUByte (8<<4)      /* 8-bit unsigned immediate operand. */
+#define SrcImmU     (9<<4)      /* Immediate operand, unsigned */
 #define SrcMask     (0xf<<4)
 /* Generic ModRM decode. */
 #define ModRM       (1<<8)
                c->src.type = OP_MEM;
                break;
        case SrcImm:
+       case SrcImmU:
                c->src.type = OP_IMM;
                c->src.ptr = (unsigned long *)c->eip;
                c->src.bytes = (c->d & ByteOp) ? 1 : c->op_bytes;
                        c->src.val = insn_fetch(s32, 4, c->eip);
                        break;
                }
+               if ((c->d & SrcMask) == SrcImmU) {
+                       switch (c->src.bytes) {
+                       case 1:
+                               c->src.val &= 0xff;
+                               break;
+                       case 2:
+                               c->src.val &= 0xffff;
+                               break;
+                       case 4:
+                               c->src.val &= 0xffffffff;
+                               break;
+                       }
+               }
                break;
        case SrcImmByte:
        case SrcImmUByte: