[SerialICE] r47 - in trunk/SerialICE: . patches
svn at coresystems.de
svn at coresystems.de
Thu Nov 19 13:55:29 CET 2009
Author: stepan
Date: 2009-11-19 13:55:28 +0100 (Thu, 19 Nov 2009)
New Revision: 47
Removed:
trunk/SerialICE/patches/serialice-cpuid-ecx.diff
Modified:
trunk/SerialICE/io.h
trunk/SerialICE/serialice.c
Log:
Only a typo kept the CPUID fix from compiling with romcc. Found
the typo so commit this per default:
Some invocations of cpuid honor the ECX register in addition to the EAX
register as an input parameter. This patch fixes cpuid in these (rare) cases.
Modified: trunk/SerialICE/io.h
===================================================================
--- trunk/SerialICE/io.h 2009-11-19 09:23:30 UTC (rev 46)
+++ trunk/SerialICE/io.h 2009-11-19 12:55:28 UTC (rev 47)
@@ -162,46 +162,46 @@
/* CPUID functions */
-static inline unsigned int cpuid_eax(unsigned int op)
+static inline unsigned int cpuid_eax(unsigned int op, unsigned op2)
{
unsigned int eax;
__asm__("cpuid"
: "=a" (eax)
- : "0" (op)
+ : "0" (op), "2" (op2)
: "ebx", "ecx", "edx");
return eax;
}
-static inline unsigned int cpuid_ebx(unsigned int op)
+static inline unsigned int cpuid_ebx(unsigned int op, unsigned op2)
{
unsigned int eax, ebx;
__asm__("cpuid"
: "=a" (eax), "=b" (ebx)
- : "0" (op)
+ : "0" (op), "2" (op2)
: "ecx", "edx" );
return ebx;
}
-static inline unsigned int cpuid_ecx(unsigned int op)
+static inline unsigned int cpuid_ecx(unsigned int op, unsigned int op2)
{
unsigned int eax, ecx;
__asm__("cpuid"
: "=a" (eax), "=c" (ecx)
- : "0" (op)
+ : "0" (op), "2" (op2)
: "ebx", "edx" );
return ecx;
}
-static inline unsigned int cpuid_edx(unsigned int op)
+static inline unsigned int cpuid_edx(unsigned int op, unsigned int op2)
{
unsigned int eax, edx;
__asm__("cpuid"
: "=a" (eax), "=d" (edx)
- : "0" (op)
+ : "0" (op), "2" (op2)
: "ebx", "ecx");
return edx;
}
Deleted: trunk/SerialICE/patches/serialice-cpuid-ecx.diff
===================================================================
--- trunk/SerialICE/patches/serialice-cpuid-ecx.diff 2009-11-19 09:23:30 UTC (rev 46)
+++ trunk/SerialICE/patches/serialice-cpuid-ecx.diff 2009-11-19 12:55:28 UTC (rev 47)
@@ -1,87 +0,0 @@
-Index: serialice.c
-===================================================================
---- serialice.c (revision 18)
-+++ serialice.c (working copy)
-@@ -161,19 +161,19 @@
- * have to worry about running out of registers if we
- * occupy eax, ebx, ecx, edx at the same time
- */
-- reg32 = cpuid_eax(eax);
-+ reg32 = cpuid_eax(eax, ecx);
- sio_put32(reg32);
- sio_putc('.');
-
-- reg32 = cpuid_ebx(eax);
-+ reg32 = cpuid_ebx(eax, ecx);
- sio_put32(reg32);
- sio_putc('.');
-
-- reg32 = cpuid_ecx(eax);
-+ reg32 = cpuid_ecx(eax, ecx);
- sio_put32(reg32);
- sio_putc('.');
-
-- reg32 = cpuid_edx(eax);
-+ reg32 = cpuid_edx(eax, ecx);
- sio_put32(reg32);
- }
-
-Index: io.h
-===================================================================
---- io.h (revision 12)
-+++ io.h (working copy)
-@@ -162,46 +162,46 @@
-
- /* CPUID functions */
-
--static inline unsigned int cpuid_eax(unsigned int op)
-+static inline unsigned int cpuid_eax(unsigned int op, unsigned op2)
- {
- unsigned int eax;
-
- __asm__("cpuid"
- : "=a" (eax)
-- : "0" (op)
-+ : "0" (op), "2" (op)
- : "ebx", "ecx", "edx");
- return eax;
- }
-
--static inline unsigned int cpuid_ebx(unsigned int op)
-+static inline unsigned int cpuid_ebx(unsigned int op, unsigned op2)
- {
- unsigned int eax, ebx;
-
- __asm__("cpuid"
- : "=a" (eax), "=b" (ebx)
-- : "0" (op)
-+ : "0" (op), "2" (op2)
- : "ecx", "edx" );
- return ebx;
- }
-
--static inline unsigned int cpuid_ecx(unsigned int op)
-+static inline unsigned int cpuid_ecx(unsigned int op, unsigned int op2)
- {
- unsigned int eax, ecx;
-
- __asm__("cpuid"
- : "=a" (eax), "=c" (ecx)
-- : "0" (op)
-+ : "0" (op), "2" (op2)
- : "ebx", "edx" );
- return ecx;
- }
-
--static inline unsigned int cpuid_edx(unsigned int op)
-+static inline unsigned int cpuid_edx(unsigned int op, unsigned int op2)
- {
- unsigned int eax, edx;
-
- __asm__("cpuid"
- : "=a" (eax), "=d" (edx)
-- : "0" (op)
-+ : "0" (op), "2" (op2)
- : "ebx", "ecx");
- return edx;
- }
Modified: trunk/SerialICE/serialice.c
===================================================================
--- trunk/SerialICE/serialice.c 2009-11-19 09:23:30 UTC (rev 46)
+++ trunk/SerialICE/serialice.c 2009-11-19 12:55:28 UTC (rev 47)
@@ -161,19 +161,19 @@
* have to worry about running out of registers if we
* occupy eax, ebx, ecx, edx at the same time
*/
- reg32 = cpuid_eax(eax);
+ reg32 = cpuid_eax(eax, ecx);
sio_put32(reg32);
sio_putc('.');
- reg32 = cpuid_ebx(eax);
+ reg32 = cpuid_ebx(eax, ecx);
sio_put32(reg32);
sio_putc('.');
- reg32 = cpuid_ecx(eax);
+ reg32 = cpuid_ecx(eax, ecx);
sio_put32(reg32);
sio_putc('.');
- reg32 = cpuid_edx(eax);
+ reg32 = cpuid_edx(eax, ecx);
sio_put32(reg32);
}
More information about the SerialICE
mailing list