rpms/xorg-x11-server/FC-6 xserver-1.1.1-int10-update.patch, NONE, 1.1 xorg-x11-server.spec, 1.189, 1.190

fedora-cvs-commits at redhat.com fedora-cvs-commits at redhat.com
Wed Apr 11 17:43:42 UTC 2007


Author: ajackson

Update of /cvs/dist/rpms/xorg-x11-server/FC-6
In directory cvs.devel.redhat.com:/tmp/cvs-serv11020

Modified Files:
	xorg-x11-server.spec 
Added Files:
	xserver-1.1.1-int10-update.patch 
Log Message:
* Wed Apr 11 2007 Adam Jackson <ajax at redhat.com> 1.1.1-47.9
- xserver-1.1.1-int10-update.patch: Backport various important int10 and
  x86emu updates from git. (#216927, among others)


xserver-1.1.1-int10-update.patch:
 int10/generic.c                |    2 -
 os-support/linux/int10/linux.c |    3 +
 x86emu/ops2.c                  |   72 ++++++++++++++++++++++++++++++-----------
 x86emu/prim_ops.c              |    4 +-
 4 files changed, 59 insertions(+), 22 deletions(-)

--- NEW FILE xserver-1.1.1-int10-update.patch ---
--- xorg-server-1.1.1/hw/xfree86/os-support/linux/int10/linux.c.jx	2006-07-05 14:31:41.000000000 -0400
+++ xorg-server-1.1.1/hw/xfree86/os-support/linux/int10/linux.c	2007-04-11 13:21:27.000000000 -0400
@@ -104,6 +104,7 @@
     legacyVGARec vga;
     xf86int10BiosLocation bios;
     Bool videoBiosMapped = FALSE;
+    pciVideoPtr pvp;
     
     if (int10Generation != serverGeneration) {
 	counter = 0;
@@ -165,6 +166,8 @@
     pInt = (xf86Int10InfoPtr)xnfcalloc(1, sizeof(xf86Int10InfoRec));
     pInt->scrnIndex = screen;
     pInt->entityIndex = entityIndex;
+    pvp = xf86GetPciInfoForEntity(entityIndex);
+    if (pvp) pInt->Tag = pciTag(pvp->bus, pvp->device, pvp->func);
     if (!xf86Int10ExecSetup(pInt))
 	goto error0;
     pInt->mem = &linuxMem;
--- xorg-server-1.1.1/hw/xfree86/int10/generic.c.jx	2006-07-05 14:31:40.000000000 -0400
+++ xorg-server-1.1.1/hw/xfree86/int10/generic.c	2007-04-11 13:21:27.000000000 -0400
@@ -105,7 +105,7 @@
     base = INTPriv(pInt)->base = xnfalloc(SYS_BIOS);
 
     pvp = xf86GetPciInfoForEntity(entityIndex);
-    if (pvp) pInt->Tag = ((pciConfigPtr)(pvp->thisCard))->tag;
+    if (pvp) pInt->Tag = pciTag(pvp->bus, pvp->device, pvp->func);
 
     /*
      * we need to map video RAM MMIO as some chipsets map mmio
--- xorg-server-1.1.1/hw/xfree86/x86emu/prim_ops.c.jx	2006-07-05 14:31:42.000000000 -0400
+++ xorg-server-1.1.1/hw/xfree86/x86emu/prim_ops.c	2007-04-11 13:21:12.000000000 -0400
@@ -2082,7 +2082,7 @@
 void imul_long_direct(u32 *res_lo, u32* res_hi,u32 d, u32 s)
 {
 #ifdef	__HAS_LONG_LONG__
-	s64 res = (s32)d * (s32)s;
+	s64 res = (s64)(s32)d * (s32)s;
 
 	*res_lo = (u32)res;
 	*res_hi = (u32)(res >> 32);
@@ -2174,7 +2174,7 @@
 void mul_long(u32 s)
 {
 #ifdef	__HAS_LONG_LONG__
-	u64 res = (u32)M.x86.R_EAX * (u32)s;
+	u64 res = (u64)M.x86.R_EAX * s;
 
 	M.x86.R_EAX = (u32)res;
 	M.x86.R_EDX = (u32)(res >> 32);
--- xorg-server-1.1.1/hw/xfree86/x86emu/ops2.c.jx	2006-07-05 14:31:42.000000000 -0400
+++ xorg-server-1.1.1/hw/xfree86/x86emu/ops2.c	2007-04-11 13:20:55.000000000 -0400
@@ -65,6 +65,40 @@
 
 /****************************************************************************
 REMARKS:
+Handles opcode 0x0f,0x31
+****************************************************************************/
+static void x86emuOp2_rdtsc(u8 X86EMU_UNUSED(op2))
+{
+#ifdef __HAS_LONG_LONG__
+    static u64 counter = 0;
+#else
+    static u32 counter = 0;
+#endif
+
+    counter += 0x10000;
+
+    /* read timestamp counter */
+    /*
+     * Note that instead of actually trying to accurately measure this, we just
+     * increase the counter by a fixed amount every time we hit one of these
+     * instructions.  Feel free to come up with a better method.
+     */
+    START_OF_INSTR();
+    DECODE_PRINTF("RDTSC\n");
+    TRACE_AND_STEP();
+#ifdef __HAS_LONG_LONG__
+    M.x86.R_EAX = counter & 0xffffffff;
+    M.x86.R_EDX = counter >> 32;
+#else
+    M.x86.R_EAX = counter;
+    M.x86.R_EDX = 0;
+#endif
+    DECODE_CLEAR_SEGOVR();
+    END_OF_INSTR();
+}
+
+/****************************************************************************
+REMARKS:
 Handles opcode 0x0f,0x80-0x8F
 ****************************************************************************/
 static void x86emuOp2_long_jump(u8 op2)
@@ -2129,7 +2163,7 @@
     uint srcoffset;
 
     START_OF_INSTR();
-    DECODE_PRINTF("BSF\n");
+    DECODE_PRINTF("BSF\t");
     FETCH_DECODE_MODRM(mod, rh, rl);
     switch(mod) {
     case 0:
@@ -2209,25 +2243,25 @@
 	break;
     case 3:				/* register to register */
 	if (M.x86.mode & SYSMODE_PREFIX_DATA) {
-	    u32 *srcreg, *dstreg;
+	    u32 srcval, *dstreg;
 
-	    srcreg = DECODE_RM_LONG_REGISTER(rl);
+	    srcval = *DECODE_RM_LONG_REGISTER(rl);
 	    DECODE_PRINTF(",");
 	    dstreg = DECODE_RM_LONG_REGISTER(rh);
 	    TRACE_AND_STEP();
-	    CONDITIONAL_SET_FLAG(*srcreg == 0, F_ZF);
+	    CONDITIONAL_SET_FLAG(srcval == 0, F_ZF);
 	    for(*dstreg = 0; *dstreg < 32; (*dstreg)++)
-		if ((*srcreg >> *dstreg) & 1) break;
+		if ((srcval >> *dstreg) & 1) break;
 	} else {
-	    u16 *srcreg, *dstreg;
+	    u16 srcval, *dstreg;
 
-	    srcreg = DECODE_RM_WORD_REGISTER(rl);
+	    srcval = *DECODE_RM_WORD_REGISTER(rl);
 	    DECODE_PRINTF(",");
 	    dstreg = DECODE_RM_WORD_REGISTER(rh);
 	    TRACE_AND_STEP();
-	    CONDITIONAL_SET_FLAG(*srcreg == 0, F_ZF);
+	    CONDITIONAL_SET_FLAG(srcval == 0, F_ZF);
 	    for(*dstreg = 0; *dstreg < 16; (*dstreg)++)
-		if ((*srcreg >> *dstreg) & 1) break;
+		if ((srcval >> *dstreg) & 1) break;
 	}
 	break;
     }
@@ -2245,7 +2279,7 @@
     uint srcoffset;
 
     START_OF_INSTR();
-    DECODE_PRINTF("BSF\n");
+    DECODE_PRINTF("BSR\t");
     FETCH_DECODE_MODRM(mod, rh, rl);
     switch(mod) {
     case 0:
@@ -2325,25 +2359,25 @@
 	break;
     case 3:				/* register to register */
 	if (M.x86.mode & SYSMODE_PREFIX_DATA) {
-	    u32 *srcreg, *dstreg;
+	    u32 srcval, *dstreg;
 
-	    srcreg = DECODE_RM_LONG_REGISTER(rl);
+	    srcval = *DECODE_RM_LONG_REGISTER(rl);
 	    DECODE_PRINTF(",");
 	    dstreg = DECODE_RM_LONG_REGISTER(rh);
 	    TRACE_AND_STEP();
-	    CONDITIONAL_SET_FLAG(*srcreg == 0, F_ZF);
+	    CONDITIONAL_SET_FLAG(srcval == 0, F_ZF);
 	    for(*dstreg = 31; *dstreg > 0; (*dstreg)--)
-		if ((*srcreg >> *dstreg) & 1) break;
+		if ((srcval >> *dstreg) & 1) break;
 	} else {
-	    u16 *srcreg, *dstreg;
+	    u16 srcval, *dstreg;
 
-	    srcreg = DECODE_RM_WORD_REGISTER(rl);
+	    srcval = *DECODE_RM_WORD_REGISTER(rl);
 	    DECODE_PRINTF(",");
 	    dstreg = DECODE_RM_WORD_REGISTER(rh);
 	    TRACE_AND_STEP();
-	    CONDITIONAL_SET_FLAG(*srcreg == 0, F_ZF);
+	    CONDITIONAL_SET_FLAG(srcval == 0, F_ZF);
 	    for(*dstreg = 15; *dstreg > 0; (*dstreg)--)
-		if ((*srcreg >> *dstreg) & 1) break;
+		if ((srcval >> *dstreg) & 1) break;
 	}
 	break;
     }
@@ -2580,7 +2614,7 @@
 /*  0x2f */ x86emuOp2_illegal_op,
 
 /*  0x30 */ x86emuOp2_illegal_op,
-/*  0x31 */ x86emuOp2_illegal_op,
+/*  0x31 */ x86emuOp2_rdtsc,
 /*  0x32 */ x86emuOp2_illegal_op,
 /*  0x33 */ x86emuOp2_illegal_op,
 /*  0x34 */ x86emuOp2_illegal_op,


Index: xorg-x11-server.spec
===================================================================
RCS file: /cvs/dist/rpms/xorg-x11-server/FC-6/xorg-x11-server.spec,v
retrieving revision 1.189
retrieving revision 1.190
diff -u -r1.189 -r1.190
--- xorg-x11-server.spec	8 Apr 2007 17:32:30 -0000	1.189
+++ xorg-x11-server.spec	11 Apr 2007 17:43:40 -0000	1.190
@@ -3,7 +3,7 @@
 Summary:   X.Org X11 X server
 Name:      xorg-x11-server
 Version:   1.1.1
-Release:   47.8%{?dist}
+Release:   47.9%{?dist}
 URL:       http://www.x.org
 License:   MIT/X11
 Group:     User Interface/X
@@ -64,6 +64,7 @@
 Patch2006:  xorg-x11-server-1.1.1-revert-xkb-change.patch
 Patch2007:  xorg-x11-server-1.1.1-aiglx-locking.patch
 Patch2008:  xorg-x11-server-1.1.1-edid-hex-dump.patch
+Patch2009:  xserver-1.1.1-int10-update.patch
 
 # autoconfiguration feature patches
 Patch3001:  xorg-x11-server-1.1.0-edid-mode-injection-1.patch
@@ -393,6 +394,7 @@
 %patch2006 -p1 -b .revert-xkb-change
 %patch2007 -p1 -b .aiglx-locking
 %patch2008 -p1 -b .hexdump
+%patch2009 -p1 -b .int10-update
 
 %patch3001 -p1 -b .edid1
 %patch3002 -p1 -b .edid2
@@ -743,6 +745,10 @@
 # -------------------------------------------------------------------
 
 %changelog
+* Wed Apr 11 2007 Adam Jackson <ajax at redhat.com> 1.1.1-47.9
+- xserver-1.1.1-int10-update.patch: Backport various important int10 and
+  x86emu updates from git. (#216927, among others)
+
 * Sun Apr 08 2007 Adam Jackson <ajax at redhat.com> 1.1.1-47.8
 - xserver-cve-2007-1003.patch: Fix CVE 2007-1003 in XC-MISC extension.
 




More information about the fedora-cvs-commits mailing list