summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'app-emulation/mol')
-rw-r--r--app-emulation/mol/ChangeLog10
-rw-r--r--app-emulation/mol/files/digest-mol-0.9.713
-rw-r--r--app-emulation/mol/files/mol-0.9.71-pciproxy-dump.patch314
-rw-r--r--app-emulation/mol/mol-0.9.71.ebuild138
4 files changed, 464 insertions, 1 deletions
diff --git a/app-emulation/mol/ChangeLog b/app-emulation/mol/ChangeLog
index 79484b1deed1..4a7dff610eec 100644
--- a/app-emulation/mol/ChangeLog
+++ b/app-emulation/mol/ChangeLog
@@ -1,6 +1,14 @@
# ChangeLog for app-emulation/mol
# Copyright 2002-2006 Gentoo Foundation; Distributed under the GPL v2
-# $Header: /var/cvsroot/gentoo-x86/app-emulation/mol/ChangeLog,v 1.63 2006/09/05 18:46:59 josejx Exp $
+# $Header: /var/cvsroot/gentoo-x86/app-emulation/mol/ChangeLog,v 1.64 2006/10/03 04:08:36 josejx Exp $
+
+*mol-0.9.71 (03 Oct 2006)
+
+ 03 Oct 2006; Joseph Jezak <josejx@gentoo.org>
+ +files/mol-0.9.71-pciproxy-dump.patch,
+ -files/mol-0.9.71_pre9-pciproxy-dump.patch, -mol-0.9.71_pre8.ebuild,
+ -mol-0.9.71_pre9.ebuild, +mol-0.9.71.ebuild:
+ Removed _pre9 and _pre8, added 0.9.71.
*mol-0.9.71_pre8-r1 (05 Sep 2006)
diff --git a/app-emulation/mol/files/digest-mol-0.9.71 b/app-emulation/mol/files/digest-mol-0.9.71
new file mode 100644
index 000000000000..bbe5364a3c8b
--- /dev/null
+++ b/app-emulation/mol/files/digest-mol-0.9.71
@@ -0,0 +1,3 @@
+MD5 9ff92506358481c92efcd171e92324d1 mol-0.9.71.tar.bz2 2045466
+RMD160 ec696f43ea984f31940a10ef3bdd3bf11b1b3598 mol-0.9.71.tar.bz2 2045466
+SHA256 1e2d2bfec748a0bc05a9cc510553075cf33432173165485576825c8077d35caf mol-0.9.71.tar.bz2 2045466
diff --git a/app-emulation/mol/files/mol-0.9.71-pciproxy-dump.patch b/app-emulation/mol/files/mol-0.9.71-pciproxy-dump.patch
new file mode 100644
index 000000000000..aee33ec0ff9c
--- /dev/null
+++ b/app-emulation/mol/files/mol-0.9.71-pciproxy-dump.patch
@@ -0,0 +1,314 @@
+--- 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
diff --git a/app-emulation/mol/mol-0.9.71.ebuild b/app-emulation/mol/mol-0.9.71.ebuild
new file mode 100644
index 000000000000..66318270ea61
--- /dev/null
+++ b/app-emulation/mol/mol-0.9.71.ebuild
@@ -0,0 +1,138 @@
+# Copyright 1999-2006 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: /var/cvsroot/gentoo-x86/app-emulation/mol/mol-0.9.71.ebuild,v 1.1 2006/10/03 04:08:36 josejx Exp $
+
+inherit flag-o-matic eutils linux-mod
+
+DESCRIPTION="MOL (Mac-on-Linux) lets PPC users run MacOS (X) under Linux (rsync snapshot)"
+HOMEPAGE="http://www.maconlinux.org/"
+SRC_URI="mirror://gentoo/${P}.tar.bz2"
+
+LICENSE="GPL-2"
+SLOT="0"
+KEYWORDS="-* ppc"
+IUSE="vnc alsa oss fbcon X oldworld sheep debug dga usb pci"
+
+MAKEOPTS="${MAKEOPTS} -j1"
+RDEPEND="net-misc/dhcp
+ net-firewall/iptables
+ alsa? ( virtual/alsa )
+ vnc? ( net-misc/vnc )
+ X? ( || ( ( x11-libs/libXext
+ dga? ( x11-libs/libXxf86dga )
+ )
+ virtual/x11
+ )
+ )"
+DEPEND="${RDEPEND}
+ X? ( || ( ( x11-libs/libXt
+ x11-proto/xextproto
+ dga? ( x11-proto/xf86dgaproto )
+ )
+ virtual/x11
+ )
+ )"
+
+MODULE_NAMES="mol(mol:${S}/src/kmod/Linux)
+ sheep(net:${S}/src/netdriver)"
+
+pkg_setup() {
+ echo
+ einfo "If you want to use MOL fullscreen on a virtual console"
+ einfo "be sure to have the USE-flag \"fbcon\" set!"
+ echo
+
+ linux-mod_pkg_setup
+}
+
+src_unpack() {
+ unpack ${A}
+
+ cd ${S}
+ # PCI Debugging Patch
+ if use debug; then
+ epatch ${FILESDIR}/${P}-pciproxy-dump.patch
+ fi
+}
+
+src_compile() {
+ filter-flags -fsigned-char
+ append-flags -D_FILE_OFFSET_BITS=64
+ append-flags -D_LARGE_FILES
+
+ export KERNEL_SOURCE="/usr/src/${FK}"
+ export LDFLAGS=""
+
+ # initialize all needed build-files
+ ./autogen.sh
+ ./configure --prefix="/usr" || die "Configure failed."
+
+ # workaround for proper module-building
+ emake defconfig || die "Make failed."
+
+ sed -i "s:CONFIG_XDGA=y:# CONFIG_XDGA is not set:" .config-ppc
+ sed -i "s:CONFIG_TAP=y:# CONFIG_TAP is not set:" .config-ppc
+ sed -i "s:CONFIG_TUN=y:# CONFIG_TUN is not set:" .config-ppc
+ use alsa || sed -i "s:CONFIG_ALSA=y:# CONFIG_ALSA is not set:" .config-ppc
+ use debug && sed -i "s:# CONFIG_DEBUGGER is not set:CONFIG_DEBUGGER=y:" .config-ppc
+ use oss || sed -i "s:CONFIG_OSS=y:# CONFIG_OSS is not set:" .config-ppc
+ use oldworld || sed -i "s:CONFIG_OLDWORLD=y:# CONFIG_OLDWORLD is not set:" .config-ppc
+ use sheep || sed -i "s:CONFIG_SHEEP=y:# CONFIG_SHEEP is not set:" .config-ppc
+ use X || sed -i "s:CONFIG_X11=y:# CONFIG_X11 is not set:" .config-ppc
+ use fbcon || sed -i "s:CONFIG_FBDEV=y:# CONFIG_FBDEV is not set:" .config-ppc
+ use vnc || sed -i "s:CONFIG_VNC=y:# CONFIG_VNC is not set:" .config-ppc
+ use dga || sed -i "s:CONFIG_XDGA=y:# CONFIG_XDGA is not set:" .config-ppc
+ use usb || sed -i "s:CONFIG_USBDEV=y:# CONFIG_USBDEV is not set:" .config-ppc
+ use pci || sed -i "s:CONFIG_PCIPROXY=y:# CONFIG_PCIPROXY is not set:" .config-ppc
+
+ einfo "The configuration has been altered according to your USE-flags."
+ # reinitialize our changed configuration
+ emake oldconfig
+
+ cd ${S}
+ emake BUILD_MODS=n || die "Build failed."
+
+ # Build the modules too!
+ BUILD_PARAMS="KERNEL_SOURCE=${KV_DIR} LV=${KV_MAJOR}${KV_MINOR} MP=${KV_OBJ}
+ KUNAME=${KV}"
+ BUILD_TARGETS=all
+ linux-mod_src_compile
+}
+
+src_install() {
+ #linux-mod_src_install
+ cd ${S}
+ emake DESTDIR=${D} install || die "Failed to install"
+ dodoc CREDITS Doc/Boot-ROM Doc/NewWorld-ROM Doc/Sound Doc/Video
+ dodoc Doc/Networking Doc/Dev/Debugger Doc/Dev/Addresses
+ dodoc Doc/man/molvconfig.1 Doc/man/startmol.1 Doc/man/molrc.5
+ insinto /var/lib/mol
+ doins ${S}/mollib/nvram/nvram.x
+}
+
+pkg_postinst() {
+ echo
+ einfo "Mac-on-Linux is now installed. To run, use the command startmol."
+ einfo "You might want to configure video modes first with molvconfig."
+ einfo "Other configuration is in /etc/molrc. For more info see:"
+ einfo " http://www.maconlinux.org"
+ einfo "Also try man molrc, man molvconfig, man startmol"
+ echo
+ ewarn "For networking and sound you might install the drivers in the"
+ ewarn "folder \"MOL-Install\" on your Mac OS X-Desktop."
+ echo
+ ewarn "If errors with networking occur, make sure you have the following"
+ ewarn "kernel functions enabled:"
+ einfo "For connecting to Linux:"
+ einfo " Universal TUN/TAP device driver support (CONFIG_TUN)"
+ einfo "For the dhcp server:"
+ einfo " Packet Socket (CONFIG_PACKET)"
+ einfo "For NAT:"
+ einfo " Network packet filtering (CONFIG_NETFILTER)"
+ einfo " Connection tracking (CONFIG_IP_NF_CONNTRACK)"
+ einfo " IP tables support (CONFIG_IP_NF_IPTABLES)"
+ einfo " Packet filtering (CONFIG_IP_NF_FILTER)"
+ einfo " Full NAT (CONFIG_IP_NF_NAT)"
+ einfo " MASQUERADE target support (CONFIG_IP_NF_TARGET_MASQUERADE)"
+ echo
+}