diff options
Diffstat (limited to 'app-emulation/mol/files/mol-pciproxy-dump.patch')
-rw-r--r-- | app-emulation/mol/files/mol-pciproxy-dump.patch | 314 |
1 files changed, 0 insertions, 314 deletions
diff --git a/app-emulation/mol/files/mol-pciproxy-dump.patch b/app-emulation/mol/files/mol-pciproxy-dump.patch deleted file mode 100644 index aee33ec0ff9c..000000000000 --- a/app-emulation/mol/files/mol-pciproxy-dump.patch +++ /dev/null @@ -1,314 +0,0 @@ ---- src/drivers/hostirq.c 2005-07-21 14:26:58.035942148 +0200 -+++ src/drivers/hostirq.c 2005-07-21 01:26:22.964756669 +0200 -@@ -26,6 +26,7 @@ - #include "thread.h" - #include "molcpu.h" - #include "driver_mgr.h" -+#include "plain-dump.h" - - #include <signal.h> - #include <string.h> -@@ -151,6 +152,7 @@ - for (i = first_mapping; i != -1; i = hostirq_mapping[i].next) { - if (hostirq_check_bit(i, irq_state->irqs)) { - // printm("update: raising %d\n", i); -+ pdump_write_pkt(0, 0, 1, hostirq_mapping[i].vmirq, "int"); - irq_line_hi(hostirq_mapping[i].vmirq); - } else { - // printm("update: lowering %d\n", i); ---- src/drivers/include/pci.h 2005-07-21 14:26:58.063944350 +0200 -+++ src/drivers/include/pci.h 2005-07-21 14:20:43.312479454 +0200 -@@ -35,8 +35,8 @@ - /* config space read/write hooks. the char * argument points to data to be read/written - * and may be overwritten by the hook. - */ -- void (*read_config)(void *, int, char *); -- void (*write_config)(void *, int, char *); -+ void (*read_config)(void *, int, int, char *); -+ void (*write_config)(void *, int, int, char *); - } pci_dev_hooks_t; - - typedef int pci_addr_t; /* 00 domain bus devfn */ ---- src/drivers/Makefile 2005-07-21 14:26:58.005939789 +0200 -+++ src/drivers/Makefile 2005-07-20 18:39:54.523735183 +0200 -@@ -8,7 +8,7 @@ - drivers-OBJS = $(obj-y) - obj-y += driver_mgr.o ioports.o keycodes.o kbd.o via-cuda.o \ - adb.o gc.o pic.o osi_pic.o nvram.o escc.o dbdma.o pci.o \ -- pci-bridges.o osi_mouse.o osi_driver.o usb.o rtas.o hostirq.o -+ pci-bridges.o osi_mouse.o osi_driver.o usb.o rtas.o hostirq.o plain-dump.o - - obj-$(LINUX) += console.o - ---- src/drivers/pci.c 2005-07-21 14:26:58.093946709 +0200 -+++ src/drivers/pci.c 2005-07-21 14:37:21.326948507 +0200 -@@ -470,7 +470,7 @@ - - - static void --do_write_config( pci_device_t *dev, int offs, unsigned char val ) -+do_write_config( pci_device_t *dev, int offs, int last, unsigned char val ) - { - - int rr = offs >>2; -@@ -478,7 +478,7 @@ - - /* indeed we now call a hook here ;-) */ - if (dev->hooks.write_config != NULL) -- (*(dev->hooks.write_config))(dev->usr, offs, (char *) &val); -+ (*(dev->hooks.write_config))(dev->usr, offs, last, (char *) &val); - - /* Base registers & rom */ - if( rr >= (PCI_BASE_ADDRESS_0 >> 2) && rr <= (PCI_BASE_ADDRESS_5 >> 2) ) { -@@ -501,7 +501,7 @@ - } - - static unsigned char --do_read_config( pci_device_t *dev, int offs ) -+do_read_config( pci_device_t *dev, int offs, int last ) - { - int rr = offs >>2; - basereg_t *bp = NULL; -@@ -528,7 +528,7 @@ - - /* call hook */ - if (dev->hooks.read_config != NULL) -- (*(dev->hooks.read_config))(dev->usr, offs, &val); -+ (*(dev->hooks.read_config))(dev->usr, offs, last, &val); - - #if 0 - if( offs == PCI_INTERRUPT_LINE ) { -@@ -558,7 +558,7 @@ - * alignment problems. - */ - for( i=len-1; i>=0; i--, val=val>>8 ) -- do_write_config( dev, offs+i, val & 0xff ); -+ do_write_config( dev, offs+i, i==0, val & 0xff ); - - /* Handle value written */ - if( (offs & ~3) != ((offs+len-1)&~3 )) -@@ -583,7 +583,7 @@ - - for( val=0, i=0; i<len; i++ ) { - val=val<<8; -- val |= do_read_config( dev, offs+i ) & 0xff; -+ val |= do_read_config( dev, offs+i, i==(len-1) ) & 0xff; - } - - VPRINT("config-read [%d] %04x+%02x: %08lx\n", len, addr, offs, val ); ---- src/drivers/pciproxy.c 2005-07-21 14:26:58.125949225 +0200 -+++ src/drivers/pciproxy.c 2005-07-21 14:34:32.137645970 +0200 -@@ -42,6 +42,8 @@ - #include <sys/mman.h> - #include <sys/poll.h> - -+#include "plain-dump.h" -+ - SET_VERBOSE_NAME("PCIPROXY"); - - #define PPLOG(format, args...) LOG(format "\n", ##args) -@@ -164,8 +166,11 @@ - - /* config space read/write hooks */ - static void --pciproxy_config_read(void *usr, int offset, char *val) -+pciproxy_config_read(void *usr, int offset, int last, char *val) - { -+ static int saved_value = 0; -+ static int saved_len = 0; -+ - pciproxy_device_t *pdev = (pciproxy_device_t *) usr; - - DPRINT("config_read: off %d val %d", offset, *val); -@@ -188,13 +193,24 @@ - } else { - /* default: pass it through to the physical device */ - pciproxy_do_read_config(pdev->fd_config, offset, val, 1); -+ -+ saved_value = saved_value | (*val << 8*saved_len); -+ saved_len++; -+ if (last) { -+ pdump_write_pkt(offset-saved_len+1, 1, saved_len, saved_value, "pci"); -+ saved_len = 0; -+ saved_value = 0; -+ } - return; - } - } - - static void --pciproxy_config_write(void *usr, int offset, char *val) -+pciproxy_config_write(void *usr, int offset, int last, char *val) - { -+ static int saved_value = 0; -+ static int saved_len = 0; -+ - pciproxy_device_t *pdev = (pciproxy_device_t *) usr; - - DPRINT("config_write: off %d val %d", offset, *val); -@@ -231,6 +247,14 @@ - /* if we are still there, pass the value to our device */ - pciproxy_do_write_config(pdev->fd_config, offset, val, 1); - -+ saved_len++; -+ saved_value = (saved_value << 8) | *val; -+ if (last) { -+ pdump_write_pkt(offset, 0, saved_len, saved_value, "pci"); -+ saved_len = 0; -+ saved_value = 0; -+ } -+ - } - - /* hook table */ -@@ -240,7 +264,7 @@ - pciproxy_config_write, - }; - --#undef BAR_ACCESS_USERSPACE -+#define BAR_ACCESS_USERSPACE 1 - - #ifdef BAR_ACCESS_USERSPACE - static inline int -@@ -263,6 +287,8 @@ - { - pciproxy_device_t *pdev = (pciproxy_device_t *) usr; - ulong res = 0; -+ ulong r_int, r_pass; -+ ushort r_short; - char *lvaddr; - int ind; - -@@ -278,6 +304,12 @@ - res = read_mem(lvaddr, len); - - DPRINT("read mem @ 0x%lx: 0x%lx", addr, res); -+ r_int = res; -+ r_short = res; -+ r_pass = res; -+ if (len == 2) r_pass = le16_to_cpu(r_short); -+ else if (len == 4) r_pass = le32_to_cpu(r_int); -+ pdump_write_pkt(addr - pdev->bars[ind].mmum.mbase, 1, len, r_pass, "mem"); - - return res; - } -@@ -288,6 +320,8 @@ - pciproxy_device_t *pdev = (pciproxy_device_t *) usr; - char *lvaddr; - int ind; -+ ulong r_int, r_pass; -+ ushort r_short; - - DPRINT("write mem @ 0x%lx: 0x%lx", addr, data); - -@@ -300,6 +334,12 @@ - } - - lvaddr = (char *)pdev->bars[ind].lvbase + (addr - pdev->bars[ind].mmum.mbase); -+ r_int = data; -+ r_short = data; -+ r_pass = data; -+ if (len == 2) r_pass = le16_to_cpu(r_short); -+ else if (len == 4) r_pass = le32_to_cpu(r_int); -+ pdump_write_pkt(addr - pdev->bars[ind].mmum.mbase, 0, len, r_pass, "mem"); - write_mem(lvaddr, data, len); - } - -@@ -961,6 +1001,8 @@ - pciproxy_check_device(devspec, node_file, pci_node); - } - -+ pdump_initialise(); -+ - return 1; - } - -@@ -1012,6 +1054,7 @@ - free(temp); - } - -+ pdump_deinit(); - } - - driver_interface_t pciproxy_driver = ---- src/drivers/plain-dump.c 1970-01-01 01:00:00.000000000 +0100 -+++ src/drivers/plain-dump.c 2005-07-20 21:58:39.656827024 +0200 -@@ -0,0 +1,43 @@ -+#include <sys/types.h> -+#include <sys/stat.h> -+#include <fcntl.h> -+#include <unistd.h> -+#include <ctype.h> -+#include <stdlib.h> -+#include <stdio.h> -+#include <sys/time.h> -+#include <time.h> -+#include <string.h> -+#include "molcpu.h" -+#include "plain-dump.h" -+ -+static int pdump_fd = -1; -+ -+void -+pdump_write_pkt(short offset, int in, int datalen, int data, const char * type) { -+ if (pdump_fd == -1) return; -+ -+ struct timeval t; -+ u_char buf[256]; -+ int len = 0; -+ -+ if (gettimeofday(&t, NULL)) -+ fprintf(stderr, "gettimeofday error\n"); -+ -+ len = snprintf((char *)buf, sizeof(buf), "%.8ld.%.6ld 0x%.8x %s %s 0x%.4x %d %*dx%.*x\n", -+ t.tv_sec, t.tv_usec, (unsigned int) mregs->nip, type, (in?"r":"w"), offset, datalen, 9-2*datalen, 0, 2*datalen, data); -+ -+ if (len > 0) -+ write(pdump_fd, buf, len); -+} -+ -+void -+pdump_initialise(void) { -+ if (pdump_fd != -1) return; -+ pdump_fd = open("/tmp/test.dump", O_CREAT | O_WRONLY | O_TRUNC, 0644); -+} -+ -+void -+pdump_deinit(void) { -+ close(pdump_fd); -+} ---- src/drivers/plain-dump.h 1970-01-01 01:00:00.000000000 +0100 -+++ src/drivers/plain-dump.h 2005-07-20 18:41:35.651686385 +0200 -@@ -0,0 +1,8 @@ -+#ifndef __plain_dump_h -+#define __plain_dump_h -+ -+void pdump_write_pkt(short offset, int in, int datalen, int data, const char * type); -+void pdump_initialise(void); -+void pdump_deinit(void); -+ -+#endif ---- src/kmod/Linux/alloc.h 2005-07-21 14:26:24.979343068 +0200 -+++ src/kmod/Linux/alloc.h 2005-07-21 14:39:34.721436670 +0200 -@@ -21,6 +21,7 @@ - #include <linux/vmalloc.h> - #include <linux/mm.h> - #include <asm/uaccess.h> -+#include <asm/io.h> - - #ifdef LINUX_26 - #include <asm/cacheflush.h> ---- util/ofdump/Makefile 2005-07-21 14:26:25.188359502 +0200 -+++ util/ofdump/Makefile 2005-07-20 11:20:48.921882497 +0200 -@@ -12,9 +12,9 @@ - # it under the terms of the GNU General Public License version 2 - # - --include ../../Makefile.top -+include ../../config/Makefile.top - - PROGRAMS = ofdump - ofdump-OBJS = main.o - --include $(top_srcdir)/Rules.make -+include $(top_srcdir)/config/Rules.make |