[SerialICE] New patch to review for serialice: 7ab505f Isolate SerialICE protocol for CPUID

Patrick Georgi (patrick@georgi-clan.de) gerrit at coreboot.org
Wed May 30 14:48:45 CEST 2012


Patrick Georgi (patrick at georgi-clan.de) just uploaded a new patch set to gerrit, which you can find at http://review.coreboot.org/1064

-gerrit

commit 7ab505f6044619879f13c373987a953cdf93ecc7
Author: Patrick Georgi <patrick at georgi-clan.de>
Date:   Wed May 30 00:34:48 2012 +0200

    Isolate SerialICE protocol for CPUID
    
    Move the serial protocol handling to a separate function.
    
    Change-Id: I1510a1e48026a30a2b76a2faf726af07191d346d
    Signed-off-by: Kyösti Mälkki <kyosti.malkki at gmail.com>
    [pg: Reorganized Kyösti's patch set]
    Signed-off-by: Patrick Georgi <patrick at georgi-clan.de>
---
 qemu-0.15.x/serialice.c |   28 +++++++++++++---------------
 1 files changed, 13 insertions(+), 15 deletions(-)

diff --git a/qemu-0.15.x/serialice.c b/qemu-0.15.x/serialice.c
index 5f58e5d..59e01a6 100644
--- a/qemu-0.15.x/serialice.c
+++ b/qemu-0.15.x/serialice.c
@@ -905,29 +905,27 @@ void serialice_wrmsr(uint64_t data, uint32_t addr, uint32_t key)
     serialice_msr_log(LOG_WRITE, addr, hi, lo, filtered);
 }
 
-cpuid_regs_t serialice_cpuid(uint32_t eax, uint32_t ecx)
+static void serialice_cpuid_wrapper(uint32_t eax, uint32_t ecx, cpuid_regs_t * ret)
 {
-    cpuid_regs_t ret;
-    int filtered;
-
-    ret.eax = eax;
-    ret.ebx = 0;                // either set by filter or by target
-    ret.ecx = ecx;
-    ret.edx = 0;                // either set by filter or by target
-
     sprintf(s->command, "*ci%08x.%08x", eax, ecx);
-
     // command read back: "\n000006f2.00000000.00001234.12340324"
     // (36 characters)
     serialice_command(s->command, 36);
-
     s->buffer[9] = 0;           // . -> \0
     s->buffer[18] = 0;          // . -> \0
     s->buffer[27] = 0;          // . -> \0
-    ret.eax = (uint32_t) strtoul(s->buffer + 1, (char **)NULL, 16);
-    ret.ebx = (uint32_t) strtoul(s->buffer + 10, (char **)NULL, 16);
-    ret.ecx = (uint32_t) strtoul(s->buffer + 19, (char **)NULL, 16);
-    ret.edx = (uint32_t) strtoul(s->buffer + 28, (char **)NULL, 16);
+    ret->eax = (uint32_t) strtoul(s->buffer + 1, (char **)NULL, 16);
+    ret->ebx = (uint32_t) strtoul(s->buffer + 10, (char **)NULL, 16);
+    ret->ecx = (uint32_t) strtoul(s->buffer + 19, (char **)NULL, 16);
+    ret->edx = (uint32_t) strtoul(s->buffer + 28, (char **)NULL, 16);
+}
+
+cpuid_regs_t serialice_cpuid(uint32_t eax, uint32_t ecx)
+{
+    cpuid_regs_t ret;
+    int filtered;
+
+    serialice_cpuid_wrapper(eax, ecx, &ret);
 
     filtered = serialice_cpuid_filter(eax, ecx, &ret);
 



More information about the SerialICE mailing list