summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'app-emulation/mol/files/mol-pciproxy-dump.patch')
-rw-r--r--app-emulation/mol/files/mol-pciproxy-dump.patch314
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