[SerialICE] Patch set updated for serialice: c9eda6f Convert io logging functions to provide hooks
Patrick Georgi (patrick@georgi-clan.de)
gerrit at coreboot.org
Thu Dec 22 21:28:45 CET 2011
Patrick Georgi (patrick at georgi-clan.de) just uploaded a new patch set to gerrit, which you can find at http://review.coreboot.org/465
-gerrit
commit c9eda6fc32d42911d71d5128ac328b1b78dac3b8
Author: Patrick Georgi <patrick.georgi at secunet.com>
Date: Thu Dec 1 14:31:58 2011 +0100
Convert io logging functions to provide hooks
Change-Id: Ib261b3812bba881d3a3124c5c0c36fa5e5ad2417
Signed-off-by: Patrick Georgi <patrick.georgi at secunet.com>
---
SerialICE/scripts/serialice.lua | 75 ++++++++++++++++++++++++---------------
1 files changed, 46 insertions(+), 29 deletions(-)
diff --git a/SerialICE/scripts/serialice.lua b/SerialICE/scripts/serialice.lua
index 2472b49..7346046 100644
--- a/SerialICE/scripts/serialice.lua
+++ b/SerialICE/scripts/serialice.lua
@@ -98,9 +98,49 @@ function walk_list(list, ...)
end
io_write_hooks = new_list()
+io_write_log_hooks = new_list()
+io_read_hooks = new_list()
+io_read_log_hooks = new_list()
msr_write_hooks = new_list()
msr_read_hooks = new_list()
+prepend_to_list(io_write_log_hooks, function(port, size, data, target)
+ if port == 0xcf9 then
+ printf("Reset triggered at %04x:%04x\n", regs.cs, regs.eip);
+ return true
+ end
+end)
+
+prepend_to_list(io_write_log_hooks, function(port, size, data, target)
+ if port == 0xcf8 then
+ return true -- Ignore
+ end
+ if port >= 0xcfc and port <= 0xcff then
+ printf("PCI %x:%02x.%x R.%02x <= %s\n",
+ bit.band(0xff,bit.rshift(SerialICE_pci_device, 16)),
+ bit.band(0x1f,bit.rshift(SerialICE_pci_device, 11)),
+ bit.band(0x7,bit.rshift(SerialICE_pci_device, 8)),
+ bit.band(0xff,SerialICE_pci_device + (port - 0xcfc)),
+ size_data(size, data))
+ return true
+ end
+end)
+
+prepend_to_list(io_read_log_hooks, function(port, size, data, target)
+ if port == 0xcf8 then
+ return true -- Ignore
+ end
+ if port >= 0xcfc and port <= 0xcff then
+ printf("PCI %x:%02x.%x R.%02x => %s\n",
+ bit.band(0xff,bit.rshift(SerialICE_pci_device, 16)),
+ bit.band(0x1f,bit.rshift(SerialICE_pci_device, 11)),
+ bit.band(0x7,bit.rshift(SerialICE_pci_device, 8)),
+ bit.band(0xff,SerialICE_pci_device + (port - 0xcfc)),
+ size_data(size, data))
+ return true
+ end
+end)
+
-- handle MTRRs
prepend_to_list(msr_write_hooks,
function(addr, hi, lo, filtered)
@@ -657,43 +697,20 @@ end
function SerialICE_io_write_log(port, size, data, target)
log_cs_ip()
-
- printf("IO: out%s %04x <= %s\n", size_suffix(size), port, size_data(size, data))
-
- -- **********************************************************
- --
-
- if port >= 0xcfc and port <= 0xcff then
- printf("PCI %x:%02x.%x R.%02x\n",
- bit.band(0xff,bit.rshift(SerialICE_pci_device, 16)),
- bit.band(0x1f,bit.rshift(SerialICE_pci_device, 11)),
- bit.band(0x7,bit.rshift(SerialICE_pci_device, 8)),
- bit.band(0xff,SerialICE_pci_device + (port - 0xcfc) ))
+ if walk_list(io_write_log_hooks, port, size, data, target) then
+ return
end
- -- **********************************************************
- --
-
- if port == 0xcf9 then
- printf("Reset triggered at %04x:%04x\n", regs.cs, regs.eip);
- end
+ printf("IO: out%s %04x <= %s\n", size_suffix(size), port, size_data(size, data))
end
function SerialICE_io_read_log(port, size, data, target)
log_cs_ip()
+ if walk_list(io_read_log_hooks, port, size, data, target) then
+ return
+ end
printf("IO: in%s %04x => %s\n", size_suffix(size), port, size_data(size, data))
-
- -- **********************************************************
- --
-
- if port >= 0xcfc and port <= 0xcff then
- printf("PCI %x:%02x.%x R.%02x\n",
- bit.band(0xff,bit.rshift(SerialICE_pci_device, 16)),
- bit.band(0x1f,bit.rshift(SerialICE_pci_device, 11)),
- bit.band(0x7,bit.rshift(SerialICE_pci_device, 8)),
- bit.band(0xff,SerialICE_pci_device + (port - 0xcfc) ))
- end
end
function SerialICE_msr_write_log(addr, hi, lo, filtered)
More information about the SerialICE
mailing list