[SerialICE] New patch to review for serialice: a9fa001 SerialICE factoring: fix serialice-com build

Kyösti Mälkki (kyosti.malkki@gmail.com) gerrit at coreboot.org
Sun May 6 19:05:16 CEST 2012


Kyösti Mälkki (kyosti.malkki at gmail.com) just uploaded a new patch set to gerrit, which you can find at http://review.coreboot.org/1011

-gerrit

commit a9fa001c8423b9b3b9e944f482512b7fed1b3d84
Author: Kyösti Mälkki <kyosti.malkki at gmail.com>
Date:   Sun May 6 15:51:35 2012 +0300

    SerialICE factoring: fix serialice-com build
    
    Small fixes to build this and add back copyrights and most headers.
    
    Change-Id: I201b8fce65d18f0737997ad43cf10c4fddaba8fe
    Signed-off-by: Kyösti Mälkki <kyosti.malkki at gmail.com>
---
 qemu-0.15.x/serialice-com.c |  102 ++++++++++++++++++++++++++++++-------------
 1 files changed, 72 insertions(+), 30 deletions(-)

diff --git a/qemu-0.15.x/serialice-com.c b/qemu-0.15.x/serialice-com.c
index 07ab293..67eb5a6 100644
--- a/qemu-0.15.x/serialice-com.c
+++ b/qemu-0.15.x/serialice-com.c
@@ -1,26 +1,77 @@
+/*
+ * QEMU PC System Emulator
+ *
+ * Copyright (c) 2009 coresystems GmbH
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in
+ * all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+ * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+ * THE SOFTWARE.
+ */
+
+/* System includes */
+#include <stdlib.h>
+#include <stdio.h>
+#include <stdint.h>
+#include <unistd.h>
+#include <string.h>
+#ifdef WIN32
+#include <windows.h>
+#include <conio.h>
+#else
+#include <fcntl.h>
+#include <termios.h>
+#include <sys/ioctl.h>
+#endif
+
+#include "console.h"
+#include "serialice.h"
+#include "sysemu.h"
+
+typedef struct {
+#ifdef WIN32
+    HANDLE fd;
+#else
+    int fd;
+#endif
+    DisplayState *ds;
+    char *buffer;
+    char *command;
+} SerialICEState;
+
+extern SerialICEState *s;
 
 uint32_t serialice_io_read_wrapper(uint16_t port, unsigned int size)
 {
-    uint32_t ret;
     switch (size) {
     case 1:
         sprintf(s->command, "*ri%04x.b", port);
         // command read back: "\n00" (3 characters)
         serialice_command(s->command, 3);
-        ret = (uint8_t) strtoul(s->buffer + 1, (char **)NULL, 16);
-        return ret;
+        return (uint8_t) strtoul(s->buffer + 1, (char **)NULL, 16);
     case 2:
         sprintf(s->command, "*ri%04x.w", port);
         // command read back: "\n0000" (5 characters)
         serialice_command(s->command, 5);
-        ret = (uint16_t) strtoul(s->buffer + 1, (char **)NULL, 16);
-        return ret;
+        return (uint16_t) strtoul(s->buffer + 1, (char **)NULL, 16);
     case 4:
         sprintf(s->command, "*ri%04x.l", port);
         // command read back: "\n00000000" (9 characters)
         serialice_command(s->command, 9);
-        ret = (uint32_t) strtoul(s->buffer + 1, (char **)NULL, 16);
-        return ret;
+        return strtoul(s->buffer + 1, (char **)NULL, 16);
     default:
         printf("WARNING: unknown read access size %d @%08x\n", size, port);
         return -1;
@@ -31,11 +82,11 @@ void serialice_io_write_wrapper(uint16_t port, unsigned int size, uint32_t data)
 {
     switch (size) {
     case 1:
-        sprintf(s->command, "*wi%04x.b=%02x", port, data);
+        sprintf(s->command, "*wi%04x.b=%02x", port, (uint8_t) data);
         serialice_command(s->command, 0);
         return;
     case 2:
-        sprintf(s->command, "*wi%04x.w=%04x", port, data);
+        sprintf(s->command, "*wi%04x.w=%04x", port, (uint16_t) data);
         serialice_command(s->command, 0);
         return;
     case 4:
@@ -50,27 +101,22 @@ void serialice_io_write_wrapper(uint16_t port, unsigned int size, uint32_t data)
 
 uint32_t serialice_load_wrapper(uint32_t addr, unsigned int size)
 {
-    uint32_t ret;
     switch (size) {
     case 1:
-        uint8_t ret;
         sprintf(s->command, "*rm%08x.b", addr);
         // command read back: "\n00" (3 characters)
         serialice_command(s->command, 3);
-        ret = (uint8_t) strtoul(s->buffer + 1, (char **)NULL, 16);
-        return ret;
+        return (uint8_t) strtoul(s->buffer + 1, (char **)NULL, 16);
     case 2:
         sprintf(s->command, "*rm%08x.w", addr);
         // command read back: "\n0000" (5 characters)
         serialice_command(s->command, 5);
-        ret = (uint16_t) strtoul(s->buffer + 1, (char **)NULL, 16);
-        return ret;
+        return (uint16_t) strtoul(s->buffer + 1, (char **)NULL, 16);
     case 4:
         sprintf(s->command, "*rm%08x.l", addr);
         // command read back: "\n00000000" (9 characters)
         serialice_command(s->command, 9);
-        ret = (uint32_t) strtoul(s->buffer + 1, (char **)NULL, 16);
-        return ret;
+        return (uint32_t) strtoul(s->buffer + 1, (char **)NULL, 16);
     default:
         printf("WARNING: unknown read access size %d @%08x\n", size, addr);
     }
@@ -81,11 +127,11 @@ void serialice_store_wrapper(uint32_t addr, unsigned int size, uint32_t data)
 {
     switch (size) {
     case 1:
-        sprintf(s->command, "*wm%08x.b=%02x", addr, data);
+        sprintf(s->command, "*wm%08x.b=%02x", addr, (uint8_t) data);
         serialice_command(s->command, 0);
         break;
     case 2:
-        sprintf(s->command, "*wm%08x.w=%04x", addr, data);
+        sprintf(s->command, "*wm%08x.w=%04x", addr, (uint16_t) data);
         serialice_command(s->command, 0);
         break;
     case 4:
@@ -101,13 +147,11 @@ void serialice_rdmsr_wrapper(uint32_t addr, uint32_t key,
                              uint32_t * hi, uint32_t * lo)
 {
     sprintf(s->command, "*rc%08x.%08x", addr, key);
-
     // command read back: "\n00000000.00000000" (18 characters)
     serialice_command(s->command, 18);
-
     s->buffer[9] = 0;           // . -> \0
-    hi = (uint32_t) strtoul(s->buffer + 1, (char **)NULL, 16);
-    lo = (uint32_t) strtoul(s->buffer + 10, (char **)NULL, 16);
+    *hi = (uint32_t) strtoul(s->buffer + 1, (char **)NULL, 16);
+    *lo = (uint32_t) strtoul(s->buffer + 10, (char **)NULL, 16);
 }
 
 void serialice_wrmsr_wrapper(uint32_t addr, uint32_t key,
@@ -117,19 +161,17 @@ void serialice_wrmsr_wrapper(uint32_t addr, uint32_t key,
     serialice_command(s->command, 0);
 }
 
-void serialice_cpuid_wrapper(uint32_t eax, uint32_t ecx, cpuid_regs_t ret)
+void serialice_cpuid_wrapper(uint32_t eax, uint32_t ecx, cpuid_regs_t * ret)
 {
     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);
 }



More information about the SerialICE mailing list