[SerialICE] New patch to review for serialice: 5433e16 SerialICE: Split IO and memory logging

Kyösti Mälkki (kyosti.malkki@gmail.com) gerrit at coreboot.org
Mon Aug 20 23:03:52 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/1467

-gerrit

commit 5433e1648148ef7504b2efee523288fb1f06c10b
Author: Kyösti Mälkki <kyosti.malkki at gmail.com>
Date:   Sun Aug 19 23:38:01 2012 +0300

    SerialICE: Split IO and memory logging
    
    Use of the flags parameter looked ugly and obscure to me.
    
    Change-Id: I9f79e2bd7e738862be2ff67b925d3ecf549b4d03
    Signed-off-by: Kyösti Mälkki <kyosti.malkki at gmail.com>
---
 qemu-0.15.x/serialice-lua.c | 29 +++++++++++++++++++++++++++--
 qemu-0.15.x/serialice.c     | 18 ++++--------------
 qemu-0.15.x/serialice.h     | 14 ++++----------
 3 files changed, 35 insertions(+), 26 deletions(-)

diff --git a/qemu-0.15.x/serialice-lua.c b/qemu-0.15.x/serialice-lua.c
index ba6e01e..638f1d3 100644
--- a/qemu-0.15.x/serialice-lua.c
+++ b/qemu-0.15.x/serialice-lua.c
@@ -41,6 +41,10 @@
 #include "serialice.h"
 #include "sysemu.h"
 
+#define LOG_IO		1
+#define LOG_MEMORY	2
+#define LOG_TARGET	4
+
 static lua_State *L;
 
 extern const char *serialice_mainboard;
@@ -436,7 +440,7 @@ int serialice_cpuid_filter(uint32_t eax, uint32_t ecx,
 
 /* SerialICE output loggers */
 
-void serialice_read_log(int flags, uint32_t data, uint32_t addr, int size)
+static void __read_log(int flags, uint32_t data, uint32_t addr, int size)
 {
     int result;
 
@@ -459,7 +463,7 @@ void serialice_read_log(int flags, uint32_t data, uint32_t addr, int size)
     }
 }
 
-void serialice_write_log(int flags, uint32_t data, uint32_t addr, int size)
+static void __write_log(int flags, uint32_t data, uint32_t addr, int size)
 {
     int result;
 
@@ -482,6 +486,27 @@ void serialice_write_log(int flags, uint32_t data, uint32_t addr, int size)
     }
 }
 
+void serialice_memory_read_log(int caught, uint32_t data, uint32_t addr, int size)
+{
+    __read_log(LOG_MEMORY | (caught ? LOG_TARGET : 0), data, addr, size);
+}
+
+void serialice_memory_write_log(int caught, uint32_t data, uint32_t addr, int size)
+{
+    __write_log(LOG_MEMORY | (caught ? LOG_TARGET : 0), data, addr, size);
+}
+
+
+void serialice_io_read_log(int caught, uint32_t data, uint32_t addr, int size)
+{
+    __read_log(LOG_IO | (caught ? LOG_TARGET : 0), data, addr, size);
+}
+
+void serialice_io_write_log(int caught, uint32_t data, uint32_t addr, int size)
+{
+    __write_log(LOG_IO | (caught ? LOG_TARGET : 0), data, addr, size);
+}
+
 void serialice_wrmsr_log(uint32_t addr, uint32_t hi,
                               uint32_t lo, int filtered)
 {
diff --git a/qemu-0.15.x/serialice.c b/qemu-0.15.x/serialice.c
index 0e90a0d..74aa9ff 100644
--- a/qemu-0.15.x/serialice.c
+++ b/qemu-0.15.x/serialice.c
@@ -166,12 +166,7 @@ cpuid_regs_t serialice_cpuid(uint32_t eax, uint32_t ecx)
 void serialice_log_load(int caught, uint32_t addr, uint32_t result,
                         unsigned int data_size)
 {
-    if (caught) {
-        serialice_read_log(LOG_MEMORY | LOG_TARGET, result, addr,
-                      data_size);
-    } else {
-        serialice_read_log(LOG_MEMORY, result, addr, data_size);
-    }
+    serialice_memory_read_log(caught, result, addr, data_size);
 }
 
 /* This function can grab Qemu load ops and forward them to the SerialICE
@@ -205,12 +200,7 @@ int serialice_handle_load(uint32_t addr, uint32_t * result,
 static void serialice_log_store(int caught, uint32_t addr, uint32_t val,
                                 unsigned int data_size)
 {
-    if (caught) {
-        serialice_write_log(LOG_MEMORY | LOG_TARGET, val, addr,
-                      data_size);
-    } else {
-        serialice_write_log(LOG_MEMORY, val, addr, data_size);
-    }
+    serialice_memory_write_log(caught, val, addr, data_size);
 }
 
 /* This function can grab Qemu store ops and forward them to the SerialICE
@@ -251,7 +241,7 @@ uint32_t serialice_io_read(uint16_t port, unsigned int size)
     }
 
     data = mask_data(data, size);
-    serialice_read_log(LOG_IO, data, port, size);
+    serialice_io_read_log(0, data, port, size);
     return data;
 }
 
@@ -269,7 +259,7 @@ void serialice_io_write(uint16_t port, unsigned int size, uint32 data)
         serialice_io_write_wrapper(port, size, data);
     }
 
-    serialice_write_log(LOG_IO, data, port, size);
+    serialice_io_write_log(0, data, port, size);
 }
 
 // **************************************************************************
diff --git a/qemu-0.15.x/serialice.h b/qemu-0.15.x/serialice.h
index c281981..4624deb 100644
--- a/qemu-0.15.x/serialice.h
+++ b/qemu-0.15.x/serialice.h
@@ -38,14 +38,6 @@
 #define WRITE_TO_QEMU		(1 << 0)
 #define WRITE_TO_SERIALICE	(1 << 1)
 
-#define LOG_IO		0
-#define LOG_MEMORY	1
-#define LOG_READ	0
-#define LOG_WRITE	2
-// these two are separate
-#define LOG_QEMU	4
-#define LOG_TARGET	8
-
 extern const char *serialice_device;
 extern int serialice_active;
 
@@ -96,8 +88,10 @@ int serialice_cpuid_filter(uint32_t eax, uint32_t ecx, cpuid_regs_t * regs);
 int serialice_rdmsr_filter(uint32_t addr, uint32_t * hi, uint32_t * lo);
 int serialice_wrmsr_filter(uint32_t addr, uint32_t * hi, uint32_t * lo);
 
-void serialice_read_log(int flags, uint32_t data, uint32_t addr, int size);
-void serialice_write_log(int flags, uint32_t data, uint32_t addr, int size);
+void serialice_io_read_log(int caught, uint32_t data, uint32_t addr, int size);
+void serialice_io_write_log(int caught, uint32_t data, uint32_t addr, int size);
+void serialice_memory_read_log(int caught, uint32_t data, uint32_t addr, int size);
+void serialice_memory_write_log(int caught, uint32_t data, uint32_t addr, int size);
 void serialice_rdmsr_log(uint32_t addr, uint32_t hi, uint32_t lo, int filtered);
 void serialice_wrmsr_log(uint32_t addr, uint32_t hi, uint32_t lo, int filtered);
 void serialice_cpuid_log(uint32_t eax, uint32_t ecx, cpuid_regs_t res, int filtered);



More information about the SerialICE mailing list