[OpenBIOS] r253 - in openbios-devel: . arch/ppc arch/ppc/qemu config/examples

svn at openbios.org svn at openbios.org
Mon Nov 24 13:16:22 CET 2008


Author: stepan
Date: 2008-11-24 13:16:22 +0100 (Mon, 24 Nov 2008)
New Revision: 253

Added:
   openbios-devel/arch/ppc/qemu/
   openbios-devel/arch/ppc/qemu/console.c
   openbios-devel/arch/ppc/qemu/init.c
   openbios-devel/arch/ppc/qemu/kernel.c
   openbios-devel/arch/ppc/qemu/main.c
   openbios-devel/arch/ppc/qemu/methods.c
   openbios-devel/arch/ppc/qemu/qemu.c
   openbios-devel/arch/ppc/qemu/qemu.fs
   openbios-devel/arch/ppc/qemu/qemu.h
   openbios-devel/arch/ppc/qemu/tree.c
   openbios-devel/arch/ppc/qemu/tree.fs
   openbios-devel/arch/ppc/qemu/vfd.c
Modified:
   openbios-devel/Makefile
   openbios-devel/arch/ppc/build.xml
   openbios-devel/config/examples/cross-ppc_config.xml
Log:
Create arch/ppc/qemu by copying arch/ppc/pearpc.

Signed-off-by: Laurent Vivier <Laurent at lvivier.info> 
Acked-by: Stefan Reinauer <stepan at coresystems.de>



Modified: openbios-devel/Makefile
===================================================================
--- openbios-devel/Makefile	2008-11-24 12:15:08 UTC (rev 252)
+++ openbios-devel/Makefile	2008-11-24 12:16:22 UTC (rev 253)
@@ -41,6 +41,7 @@
 	@mkdir -p $(ODIR)/target/arch/ppc
 	@mkdir -p $(ODIR)/target/arch/ppc/briq # no autodetection of those..
 	@mkdir -p $(ODIR)/target/arch/ppc/pearpc
+	@mkdir -p $(ODIR)/target/arch/ppc/qemu
 	@mkdir -p $(ODIR)/target/arch/ppc/mol
 	@mkdir -p $(ODIR)/target/arch/x86
 	@mkdir -p $(ODIR)/target/arch/x86/xbox

Modified: openbios-devel/arch/ppc/build.xml
===================================================================
--- openbios-devel/arch/ppc/build.xml	2008-11-24 12:15:08 UTC (rev 252)
+++ openbios-devel/arch/ppc/build.xml	2008-11-24 12:16:22 UTC (rev 253)
@@ -13,6 +13,12 @@
   <object source="pearpc/pearpc.fs"/>
  </dictionary>
  
+  <dictionary name="openbios-qemu" init="openbios" target="forth" condition="QEMU">
+  <object source="ppc.fs"/>
+  <object source="qemu/tree.fs"/>
+  <object source="qemu/qemu.fs"/>
+ </dictionary>
+
  <dictionary name="openbios-mol" init="openbios" target="forth" condition="MOL">
   <object source="ppc.fs"/>
   <object source="mol/tree.fs"/>
@@ -56,6 +62,23 @@
   <external-object source="target/include/pearpc-dict.h"/>
  </executable>
 
+ <executable name="target/include/qemu-dict.h" target="target" condition="QEMU">
+  <rule><![CDATA[
+	@echo "static const char forth_dictionary[] = {" > $@
+	@cat $< | hexdump -ve '1/0 "\t" 8/1 "0x%02x, " 1/0 "\n"' \
+					| sed 's/0x  ,//g' >> $@
+	@echo "};" >> $@
+  ]]></rule>
+  <external-object source="openbios-qemu.dict"/>
+ </executable>
+
+ <executable name="target/arch/ppc/qemu/kernel.o" target="target" condition="QEMU">
+  <rule><![CDATA[
+	$(CC) $$EXTRACFLAGS $(CFLAGS) $(INCLUDES) -c -o $@ arch/ppc/qemu/kernel.c
+  ]]></rule>
+  <external-object source="target/include/qemu-dict.h"/>
+ </executable>
+
  
  <executable name="target/include/mol-dict.h" target="target" condition="MOL">
   <rule><![CDATA[
@@ -112,6 +135,24 @@
   <object source="pearpc/console.c" flags="-Iarch/ppc"/>
  </library>
  
+ <library name="qemu" target="target" type="static" condition="QEMU">
+  <object source="misc.S">
+   <rule><![CDATA[
+	$(CPP) -D__ASSEMBLY__ $(INCLUDES) $< | $(M4) -s $(M4_NO_GNU) | tr ';' '\n' > $@.s
+	$(AS) $@.s $(AS_FLAGS) -o $@
+   ]]></rule>
+  </object>
+  <object source="ofmem.c"/>
+  <object source="qemu/qemu.c" flags="-Iarch/ppc"/>
+  <object source="qemu/init.c" flags="-Iarch/ppc"/>
+  <external-object source="target/arch/ppc/qemu/kernel.o"/>
+  <object source="qemu/main.c" flags="-Iarch/ppc"/>
+  <object source="qemu/methods.c" flags="-Iarch/ppc"/>
+  <object source="qemu/tree.c" flags="-Iarch/ppc"/>
+  <object source="qemu/vfd.c" flags="-Iarch/ppc"/>
+  <object source="qemu/console.c" flags="-Iarch/ppc"/>
+ </library>
+
  
  <library name="mol" target="target" type="static" condition="MOL">
   <object source="misc.S">
@@ -188,6 +229,34 @@
   <external-object source="liblibc.a"/>
   <external-object source="libfs.a"/>
  </executable>
+
+ <executable name="openbios-qemu.elf" target="target" condition="QEMU">
+  <rule>
+	$(LD) -g -Ttext=0x01e01000 -Bstatic $^ $(shell $(CC) -print-libgcc-file-name) -o $@
+	$(NM) $@ | sort > $(ODIR)/openbios-qemu.syms
+	cp $@ $@.nostrip
+	$(STRIP) $@
+  </rule>
+  <object source="start.S">
+   <rule><![CDATA[
+	$(CPP) -D__ASSEMBLY__ $(INCLUDES) $< | $(M4) -s $(M4_NO_GNU) | tr ';' '\n' > $@.s
+	$(AS) $@.s $(AS_FLAGS) -o $@
+   ]]></rule>
+  </object>
+  <object source="timebase.S">
+   <rule><![CDATA[
+	$(CPP) -D__ASSEMBLY__ $(INCLUDES) $< | $(M4) -s $(M4_NO_GNU) | tr ';' '\n' > $@.s
+	$(AS) $@.s $(AS_FLAGS) -o $@
+   ]]></rule>
+  </object>
+  <external-object source="libqemu.a"/>
+  <external-object source="libbootstrap.a"/>
+  <external-object source="libmodules.a"/>
+  <external-object source="libdrivers.a"/>
+  <external-object source="liblibc.a"/>
+  <external-object source="libfs.a"/>
+ </executable>
+
  
 
  

Added: openbios-devel/arch/ppc/qemu/console.c
===================================================================
--- openbios-devel/arch/ppc/qemu/console.c	                        (rev 0)
+++ openbios-devel/arch/ppc/qemu/console.c	2008-11-24 12:16:22 UTC (rev 253)
@@ -0,0 +1,47 @@
+
+/*
+ *      <console.c>
+ *
+ *      Simple text console
+ *
+ *   Copyright (C) 2005 Stefan Reinauer <stepan at openbios.org>
+ *
+ *   This program is free software; you can redistribute it and/or
+ *   modify it under the terms of the GNU General Public License
+ *   as published by the Free Software Foundation
+ *
+ */
+
+#include "openbios/config.h"
+#include "openbios/bindings.h"
+#include "libc/diskio.h"
+#include "ofmem.h"
+#include "qemu/qemu.h"
+
+
+typedef struct osi_fb_info {
+	unsigned long   mphys;
+	int             rb, w, h, depth;
+} osi_fb_info_t;
+
+
+int Qemu_GetFBInfo( osi_fb_info_t *fb )
+{
+
+        fb->w=1024;
+        fb->h=768;
+        fb->depth=15;
+        fb->rb=2048;
+        fb->mphys=0x84000000;
+
+	return 0;
+}
+
+#define openbios_GetFBInfo(x) Qemu_GetFBInfo(x)
+
+#include "../../../modules/video.c"
+
+#include "../../../modules/console.c"
+
+
+

Added: openbios-devel/arch/ppc/qemu/init.c
===================================================================
--- openbios-devel/arch/ppc/qemu/init.c	                        (rev 0)
+++ openbios-devel/arch/ppc/qemu/init.c	2008-11-24 12:16:22 UTC (rev 253)
@@ -0,0 +1,137 @@
+/*
+ *   Creation Date: <2004/08/28 18:38:22 greg>
+ *   Time-stamp: <2004/08/28 18:38:22 greg>
+ *
+ *	<init.c>
+ *
+ *	Initialization for qemu
+ *
+ *   Copyright (C) 2004 Greg Watson
+ *   Copyright (C) 2005 Stefan Reinauer
+ *
+ *   based on mol/init.c:
+ *
+ *   Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004 Samuel & David Rydh
+ *      (samuel at ibrium.se, dary at lindesign.se)
+ *
+ *   This program is free software; you can redistribute it and/or
+ *   modify it under the terms of the GNU General Public License
+ *   as published by the Free Software Foundation
+ *
+ */
+
+#include "openbios/config.h"
+#include "openbios/bindings.h"
+#include "openbios/nvram.h"
+#include "qemu/qemu.h"
+#include "ofmem.h"
+#include "openbios-version.h"
+
+extern void unexpected_excep( int vector );
+extern void ob_ide_init( void );
+extern void ob_pci_init( void );
+extern void ob_adb_init( void );
+extern void setup_timers( void );
+
+#if 0
+int
+get_bool_res( const char *res )
+{
+	char buf[8], *p;
+
+	p = BootHGetStrRes( res, buf, sizeof(buf) );
+	if( !p )
+		return -1;
+	if( !strcasecmp(p,"true") || !strcasecmp(p,"yes") || !strcasecmp(p,"1") )
+		return 1;
+	return 0;
+}
+#endif
+
+void
+unexpected_excep( int vector )
+{
+	printk("openbios panic: Unexpected exception %x\n", vector );
+	for( ;; )
+		;
+}
+
+void
+entry( void )
+{
+	printk("\n");
+	printk("=============================================================\n");
+	printk("OpenBIOS %s [%s]\n", OPENBIOS_RELEASE, OPENBIOS_BUILD_DATE );
+
+	ofmem_init();
+	initialize_forth();
+	/* won't return */
+
+	printk("of_startup returned!\n");
+	for( ;; )
+		;
+}
+
+static void
+setenv( char *env, char *value )
+{
+	push_str( value );
+	push_str( env );
+	fword("$setenv");
+}
+
+void
+arch_of_init( void )
+{
+#if USE_RTAS
+	phandle_t ph;
+#endif
+	int autoboot;
+
+	devtree_init();
+	nvram_init();
+	modules_init();
+#ifdef CONFIG_DRIVER_PCI
+	ob_pci_init();
+#endif
+#ifdef CONFIG_DRIVER_IDE
+        setup_timers();
+        ob_ide_init();
+#endif
+#ifdef CONFIG_DRIVER_ADB
+	ob_adb_init();
+#endif
+
+	node_methods_init();
+	init_video();
+
+#if USE_RTAS
+	if( !(ph=find_dev("/rtas")) )
+		printk("Warning: No /rtas node\n");
+	else {
+		ulong size = 0x1000;
+		while( size < (ulong)of_rtas_end - (ulong)of_rtas_start )
+			size *= 2;
+		set_property( ph, "rtas-size", (char*)&size, sizeof(size) );
+	}
+#endif
+
+#if 0
+	/* tweak boot settings */
+	autoboot = !!get_bool_res("autoboot");
+#endif
+	autoboot = 0;
+	if( !autoboot )
+		printk("Autobooting disabled - dropping into OpenFirmware\n");
+	setenv("auto-boot?", autoboot ? "true" : "false" );
+	setenv("boot-command", "qemuboot");
+
+#if 0
+	if( get_bool_res("tty-interface") == 1 )
+#endif
+		fword("activate-tty-interface");
+
+	/* hack */
+	device_end();
+	bind_func("qemuboot", boot );
+}

Added: openbios-devel/arch/ppc/qemu/kernel.c
===================================================================
--- openbios-devel/arch/ppc/qemu/kernel.c	                        (rev 0)
+++ openbios-devel/arch/ppc/qemu/kernel.c	2008-11-24 12:16:22 UTC (rev 253)
@@ -0,0 +1,17 @@
+/*
+ *   Creation Date: <2004/08/28 18:03:25 stepan>
+ *   Time-stamp: <2004/08/28 18:03:25 stepan>
+ *
+ *	<qemu/kernel.c>
+ *
+ *   Copyright (C) 2005 Stefan Reinauer
+ *
+ *   This program is free software; you can redistribute it and/or
+ *   modify it under the terms of the GNU General Public License
+ *   version 2
+ *
+ */
+
+#include "qemu-dict.h"
+#include "../kernel.c"
+

Added: openbios-devel/arch/ppc/qemu/main.c
===================================================================
--- openbios-devel/arch/ppc/qemu/main.c	                        (rev 0)
+++ openbios-devel/arch/ppc/qemu/main.c	2008-11-24 12:16:22 UTC (rev 253)
@@ -0,0 +1,145 @@
+/*
+ *   Creation Date: <2004/08/28 18:38:22 greg>
+ *   Time-stamp: <2004/08/28 18:38:22 greg>
+ *
+ *	<main.c>
+ *
+ *   Copyright (C) 2004 Greg Watson
+ *
+ *   Based on MOL specific code which is
+ *   Copyright (C) 2002, 2003, 2004 Samuel Rydh (samuel at ibrium.se)
+ *
+ *   This program is free software; you can redistribute it and/or
+ *   modify it under the terms of the GNU General Public License
+ *   as published by the Free Software Foundation
+ *
+ */
+
+
+#include "openbios/config.h"
+#include "openbios/bindings.h"
+#include "openbios/elfload.h"
+#include "openbios/nvram.h"
+#include "libc/diskio.h"
+#include "libc/vsprintf.h"
+#include "qemu/qemu.h"
+#include "ofmem.h"
+
+static void
+transfer_control_to_elf( ulong entry )
+{
+	extern void call_elf( ulong entry );
+	printk("Starting ELF image at 0x%08lX\n", entry);
+	call_elf( 0x400000 );
+	//call_elf( entry );
+
+	fatal_error("call_elf returned unexpectedly\n");
+}
+
+static int
+load_elf_rom( ulong *entry, int fd )
+{
+	int i, lszz_offs, elf_offs;
+	char buf[128], *addr;
+	Elf_ehdr ehdr;
+	Elf_phdr *phdr;
+	size_t s;
+
+	printk("Loading '%s'\n", get_file_path(fd));
+
+	/* the ELF-image (usually) starts at offset 0x4000 */
+	if( (elf_offs=find_elf(fd)) < 0 ) {
+		printk("----> %s is not an ELF image\n", buf );
+		exit(1);
+	}
+	if( !(phdr=elf_readhdrs(fd, elf_offs, &ehdr)) )
+		fatal_error("elf_readhdrs failed\n");
+
+	*entry = ehdr.e_entry;
+
+	/* load segments. Compressed ROM-image assumed to be located immediately
+	 * after the last segment */
+	lszz_offs = elf_offs;
+	for( i=0; i<ehdr.e_phnum; i++ ) {
+		/* p_memsz, p_flags */
+		s = MIN( phdr[i].p_filesz, phdr[i].p_memsz );
+		seek_io( fd, elf_offs + phdr[i].p_offset );
+
+		/* printk("filesz: %08lX memsz: %08lX p_offset: %08lX p_vaddr %08lX\n",
+		   phdr[i].p_filesz, phdr[i].p_memsz, phdr[i].p_offset,
+		   phdr[i].p_vaddr ); */
+
+		if( phdr[i].p_vaddr != phdr[i].p_paddr )
+			printk("WARNING: ELF segment virtual addr != physical addr\n");
+		lszz_offs = MAX( lszz_offs, elf_offs + phdr[i].p_offset + phdr[i].p_filesz );
+		if( !s )
+			continue;
+		if( ofmem_claim( phdr[i].p_vaddr, phdr[i].p_memsz, 0 ) == -1 )
+			fatal_error("Claim failed!\n");
+
+		addr = (char*)phdr[i].p_vaddr;
+		if( read_io(fd, addr, s) != s )
+			fatal_error("read failed\n");
+
+#if 0
+		/* patch CODE segment */
+		if( *entry >= phdr[i].p_vaddr && *entry < phdr[i].p_vaddr + s ) {
+			patch_newworld_rom( (char*)phdr[i].p_vaddr, s );
+			newworld_timer_hack( (char*)phdr[i].p_vaddr, s );
+		}
+#endif
+		flush_icache_range( addr, addr+s );
+
+		/*printk("ELF ROM-section loaded at %08lX (size %08lX)\n",
+		   (ulong)phdr[i].p_vaddr, (ulong)phdr[i].p_memsz );*/
+	}
+	free( phdr );
+	return lszz_offs;
+}
+
+
+static void
+encode_bootpath( const char *spec, const char *args )
+{
+	phandle_t chosen_ph = find_dev("/chosen");
+	set_property( chosen_ph, "bootpath", spec, strlen(spec)+1 );
+	set_property( chosen_ph, "bootargs", args, strlen(args)+1 );
+}
+
+/************************************************************************/
+/*	qemu booting							*/
+/************************************************************************/
+
+static void
+qemu_startup( void )
+{
+	const char *paths[] = { "hd:0,\\zImage.chrp", NULL };
+	const char *args[] = { "root=/dev/hda2 console=ttyS0,115200", NULL };
+	ulong entry;
+	int i, fd;
+
+	for( i=0; paths[i]; i++ ) {
+		if( (fd=open_io(paths[i])) == -1 )
+			continue;
+		(void) load_elf_rom( &entry, fd );
+		close_io( fd );
+		encode_bootpath( paths[i], args[i] );
+
+		update_nvram();
+		transfer_control_to_elf( entry );
+		/* won't come here */
+	}
+	printk("*** Boot failure! No secondary bootloader specified ***\n");
+}
+
+
+/************************************************************************/
+/*	entry								*/
+/************************************************************************/
+
+void
+boot( void )
+{
+	fword("update-chosen");
+	qemu_startup();
+}

Added: openbios-devel/arch/ppc/qemu/methods.c
===================================================================
--- openbios-devel/arch/ppc/qemu/methods.c	                        (rev 0)
+++ openbios-devel/arch/ppc/qemu/methods.c	2008-11-24 12:16:22 UTC (rev 253)
@@ -0,0 +1,335 @@
+/*
+ *   Creation Date: <2004/08/28 18:38:22 greg>
+ *   Time-stamp: <2004/08/28 18:38:22 greg>
+ *
+ *	<methods.c>
+ *
+ *	Misc device node methods
+ *
+ *   Copyright (C) 2004 Greg Watson
+ *
+ *   Based on MOL specific code which is
+ *
+ *   Copyright (C) 2003, 2004 Samuel Rydh (samuel at ibrium.se)
+ *
+ *   This program is free software; you can redistribute it and/or
+ *   modify it under the terms of the GNU General Public License
+ *   version 2
+ *
+ */
+
+#include "openbios/config.h"
+#include "openbios/bindings.h"
+#include "libc/string.h"
+#include "qemu/qemu.h"
+#include "ofmem.h"
+
+/************************************************************************/
+/*	RTAS (run-time abstraction services)				*/
+/************************************************************************/
+
+#ifdef USE_RTAS
+DECLARE_NODE( rtas, INSTALL_OPEN, 0, "+/rtas" );
+
+/* ( physbase -- rtas_callback ) */
+static void
+rtas_instantiate( void )
+{
+	int physbase = POP();
+	int s=0x1000, size = (int)of_rtas_end - (int)of_rtas_start;
+	ulong virt;
+
+	while( s < size )
+		s += 0x1000;
+	virt = ofmem_claim_virt( 0, s, 0x1000 );
+	ofmem_map( physbase, virt, s, -1 );
+	memcpy( (char*)virt, of_rtas_start, size );
+
+	printk("RTAS instantiated at %08x\n", physbase );
+	flush_icache_range( (char*)virt, (char*)virt + size );
+
+	PUSH( physbase );
+}
+
+NODE_METHODS( rtas ) = {
+	{ "instantiate",	rtas_instantiate },
+	{ "instantiate-rtas",	rtas_instantiate },
+};
+#endif
+
+
+/************************************************************************/
+/*	stdout								*/
+/************************************************************************/
+
+DECLARE_NODE( video_stdout, INSTALL_OPEN, 0, "Tdisplay" );
+
+/* ( addr len -- actual ) */
+static void
+stdout_write( void )
+{
+	int len = POP();
+	char *addr = (char*)POP();
+	char *s = malloc( len + 1 );
+
+	strncpy_nopad( s, addr, len );
+	s[len]=0;
+
+	printk( "%s", s );
+	//vfd_draw_str( s );
+	console_draw_str( s );
+
+	free( s );
+
+	PUSH( len );
+}
+
+NODE_METHODS( video_stdout ) = {
+	{ "write",	stdout_write	},
+};
+
+
+/************************************************************************/
+/*	tty								*/
+/************************************************************************/
+
+DECLARE_NODE( tty, INSTALL_OPEN, 0, "/packages/terminal-emulator" );
+
+/* ( addr len -- actual ) */
+static void
+tty_read( void )
+{
+	int ch, len = POP();
+	char *p = (char*)POP();
+	int ret=0;
+
+	if( len > 0 ) {
+		ret = 1;
+		ch = getchar();
+		if( ch >= 0 ) {
+			*p = ch;
+		} else {
+			ret = 0;
+		}
+	}
+	PUSH( ret );
+}
+
+/* ( addr len -- actual ) */
+static void
+tty_write( void )
+{
+	int i, len = POP();
+	char *p = (char*)POP();
+	for( i=0; i<len; i++ )
+		putchar( *p++ );
+	RET( len );
+}
+
+NODE_METHODS( tty ) = {
+	{ "read",	tty_read	},
+	{ "write",	tty_write	},
+};
+
+/************************************************************************/
+/*	client interface 'quiesce'					*/
+/************************************************************************/
+
+DECLARE_NODE( ciface, 0, 0, "/packages/client-iface" );
+
+/* ( -- ) */
+static void
+ciface_quiesce( ulong args[], ulong ret[] )
+{
+#if 0
+	ulong msr;
+	/* This seems to be the correct thing to do - but I'm not sure */
+	asm volatile("mfmsr %0" : "=r" (msr) : );
+	msr &= ~(MSR_IR | MSR_DR);
+	asm volatile("mtmsr %0" :: "r" (msr) );
+#endif
+	printk("=============================================================\n\n");
+}
+
+/* ( -- ms ) */
+static void
+ciface_milliseconds( ulong args[], ulong ret[] )
+{
+	extern unsigned long get_timer_freq();
+	static ulong mticks=0, usecs=0;
+	ulong t;
+
+	asm volatile("mftb %0" : "=r" (t) : );
+	if( mticks )
+		usecs += get_timer_freq() / 1000000 * ( t-mticks );
+	mticks = t;
+
+	PUSH( usecs/1000 );
+}
+
+
+NODE_METHODS( ciface ) = {
+	{ "quiesce",		ciface_quiesce		},
+	{ "milliseconds",	ciface_milliseconds	},
+};
+
+
+/************************************************************************/
+/*	MMU/memory methods						*/
+/************************************************************************/
+
+DECLARE_NODE( memory, INSTALL_OPEN, 0, "/memory" );
+DECLARE_NODE( mmu, INSTALL_OPEN, 0, "/cpu at 0" );
+DECLARE_NODE( mmu_ciface, 0, 0, "/packages/client-iface" );
+
+
+/* ( phys size align --- base ) */
+static void
+mem_claim( void )
+{
+	int align = POP();
+	int size = POP();
+	int phys = POP();
+	int ret = ofmem_claim_phys( phys, size, align );
+
+	if( ret == -1 ) {
+		printk("MEM: claim failure\n");
+		throw( -13 );
+		return;
+	}
+	PUSH( ret );
+}
+
+/* ( phys size --- ) */
+static void
+mem_release( void )
+{
+	POP(); POP();
+}
+
+/* ( phys size align --- base ) */
+static void
+mmu_claim( void )
+{
+	int align = POP();
+	int size = POP();
+	int phys = POP();
+	int ret = ofmem_claim_virt( phys, size, align );
+
+	if( ret == -1 ) {
+		printk("MMU: CLAIM failure\n");
+		throw( -13 );
+		return;
+	}
+	PUSH( ret );
+}
+
+/* ( phys size --- ) */
+static void
+mmu_release( void )
+{
+	POP(); POP();
+}
+
+/* ( phys virt size mode -- [ret???] ) */
+static void
+mmu_map( void )
+{
+	int mode = POP();
+	int size = POP();
+	int virt = POP();
+	int phys = POP();
+	int ret;
+
+	/* printk("mmu_map: %x %x %x %x\n", phys, virt, size, mode ); */
+	ret = ofmem_map( phys, virt, size, mode );
+
+	if( ret ) {
+		printk("MMU: map failure\n");
+		throw( -13 );
+		return;
+	}
+}
+
+/* ( virt size -- ) */
+static void
+mmu_unmap( void )
+{
+	POP(); POP();
+}
+
+/* ( virt -- false | phys mode true ) */
+static void
+mmu_translate( void )
+{
+	ulong mode;
+	int virt = POP();
+	int phys = ofmem_translate( virt, &mode );
+
+	if( phys == -1 ) {
+		PUSH( 0 );
+	} else {
+		PUSH( phys );
+		PUSH( (int)mode );
+		PUSH( -1 );
+	}
+}
+
+/* ( virt size align -- baseaddr|-1 ) */
+static void
+ciface_claim( void )
+{
+	int align = POP();
+	int size = POP();
+	int virt = POP();
+	int ret = ofmem_claim( virt, size, align );
+
+	/* printk("ciface_claim: %08x %08x %x\n", virt, size, align ); */
+	PUSH( ret );
+}
+
+/* ( virt size -- ) */
+static void
+ciface_release( void )
+{
+	POP();
+	POP();
+}
+
+
+NODE_METHODS( memory ) = {
+	{ "claim",		mem_claim		},
+	{ "release",		mem_release		},
+};
+
+NODE_METHODS( mmu ) = {
+	{ "claim",		mmu_claim		},
+	{ "release",		mmu_release		},
+	{ "map",		mmu_map			},
+	{ "unmap",		mmu_unmap		},
+	{ "translate",		mmu_translate		},
+};
+
+NODE_METHODS( mmu_ciface ) = {
+	{ "claim",		ciface_claim		},
+	{ "release",		ciface_release		},
+};
+
+
+/************************************************************************/
+/*	init								*/
+/************************************************************************/
+
+void
+node_methods_init( void )
+{
+#ifdef USE_RTAS
+	REGISTER_NODE( rtas );
+#endif
+	REGISTER_NODE( video_stdout );
+	REGISTER_NODE( ciface );
+	REGISTER_NODE( memory );
+	REGISTER_NODE( mmu );
+	REGISTER_NODE( mmu_ciface );
+	REGISTER_NODE( tty );
+}

Added: openbios-devel/arch/ppc/qemu/qemu.c
===================================================================
--- openbios-devel/arch/ppc/qemu/qemu.c	                        (rev 0)
+++ openbios-devel/arch/ppc/qemu/qemu.c	2008-11-24 12:16:22 UTC (rev 253)
@@ -0,0 +1,206 @@
+/*
+ *   Creation Date: <2004/08/28 18:38:22 greg>
+ *   Time-stamp: <2004/08/28 18:38:22 greg>
+ *
+ *	<qemu.c>
+ *
+ *   Copyright (C) 2004, Greg Watson
+ *
+ *   derived from mol.c
+ *
+ *   Copyright (C) 2003, 2004 Samuel Rydh (samuel at ibrium.se)
+ *
+ *   This program is free software; you can redistribute it and/or
+ *   modify it under the terms of the GNU General Public License
+ *   version 2
+ *
+ */
+
+#include "openbios/config.h"
+#include "openbios/kernel.h"
+#include "openbios/nvram.h"
+#include "libc/vsprintf.h"
+#include "libc/string.h"
+#include "qemu/qemu.h"
+#include <stdarg.h>
+
+#define UART_BASE 0x3f8
+
+// FIXME
+unsigned long virt_offset = 0;
+
+
+void
+exit( int status )
+{
+	for (;;);
+}
+
+void
+fatal_error( const char *err )
+{
+	printk("Fatal error: %s\n", err );
+	exit(0);
+}
+
+void
+panic( const char *err )
+{
+	printk("Panic: %s\n", err );
+	exit(0);
+
+	/* won't come here... this keeps the gcc happy */
+	for( ;; )
+		;
+}
+
+
+/************************************************************************/
+/*	print using OSI interface					*/
+/************************************************************************/
+
+static int do_indent;
+
+int
+printk( const char *fmt, ... )
+{
+	char *p, buf[1024];	/* XXX: no buffer overflow protection... */
+	va_list args;
+	int i;
+
+	va_start(args, fmt);
+	i=vsprintf(buf,fmt,args);
+	va_end(args);
+
+	for( p=buf; *p; p++ ) {
+		if( *p == '\n' )
+			do_indent = 0;
+		if( do_indent++ == 1 ) {
+			putchar( '>' );
+			putchar( '>' );
+			putchar( ' ' );
+		}
+		putchar( *p );
+	}
+	return i;
+}
+
+
+/************************************************************************/
+/*	TTY iface							*/
+/************************************************************************/
+
+static int ttychar = -1;
+
+static int
+tty_avail( void )
+{
+	return 1;
+}
+
+static int
+tty_putchar( int c )
+{
+	if( tty_avail() ) {
+		while (!(inb(UART_BASE + 0x05) & 0x20))
+			;
+		outb(c, UART_BASE);
+		while (!(inb(UART_BASE + 0x05) & 0x40))
+			;
+	}
+	return c;
+}
+
+int
+availchar( void )
+{
+	if( !tty_avail() )
+		return 0;
+
+	if( ttychar < 0 )
+		ttychar = inb(UART_BASE);
+	return (ttychar >= 0);
+}
+
+int
+getchar( void )
+{
+	int ch;
+
+	if( !tty_avail() )
+		return 0;
+
+	if( ttychar < 0 )
+		return inb(UART_BASE);
+	ch = ttychar;
+	ttychar = -1;
+	return ch;
+}
+
+int
+putchar( int c )
+{
+	if (c == '\n')
+		tty_putchar('\r');
+	return tty_putchar(c);
+}
+
+
+/************************************************************************/
+/*	briQ specific stuff						*/
+/************************************************************************/
+
+#define IO_NVRAM_PA_START 0x80860000
+#define IO_NVRAM_PA_END 0x80880000
+
+static char *nvram=(char *)IO_NVRAM_PA_START;
+
+void
+dump_nvram(void)
+{
+  static char hexdigit[] = "0123456789abcdef";
+  int i;
+  for (i = 0; i < 16*4; i++)
+    {
+      printk ("%c", hexdigit[nvram[i<<4] >> 4]);
+      printk ("%c", hexdigit[nvram[i<<4] % 16]);
+      if (!((i + 1) % 16))
+        {
+          printk ("\n");
+        }
+      else
+        {
+          printk (" ");
+        }
+    }
+}
+
+
+int
+arch_nvram_size( void )
+{
+	return (IO_NVRAM_PA_END-IO_NVRAM_PA_START)>>4;
+}
+
+void
+arch_nvram_put( char *buf )
+{
+	int i;
+	for (i=0; i<(IO_NVRAM_PA_END-IO_NVRAM_PA_START)>>4; i++)
+		nvram[i<<4]=buf[i];
+	// memcpy(nvram, buf, IO_NVRAM_PA_END-IO_NVRAM_PA_START);
+	printk("new nvram:\n");
+	dump_nvram();
+}
+
+void
+arch_nvram_get( char *buf )
+{
+	int i;
+	for (i=0; i<(IO_NVRAM_PA_END-IO_NVRAM_PA_START)>>4; i++)
+		buf[i]=nvram[i<<4];
+
+	//memcpy(buf, nvram, IO_NVRAM_PA_END-IO_NVRAM_PA_START);
+	printk("current nvram:\n");
+	dump_nvram();
+}

Added: openbios-devel/arch/ppc/qemu/qemu.fs
===================================================================
--- openbios-devel/arch/ppc/qemu/qemu.fs	                        (rev 0)
+++ openbios-devel/arch/ppc/qemu/qemu.fs	2008-11-24 12:16:22 UTC (rev 253)
@@ -0,0 +1,116 @@
+\   qemu specific initialization code
+\
+\   Copyright (C) 2005 Stefan Reinauer
+\
+\   This program is free software; you can redistribute it and/or
+\   modify it under the terms of the GNU General Public License
+\   as published by the Free Software Foundation
+\
+
+
+\ -------------------------------------------------------------------------
+\ initialization
+\ -------------------------------------------------------------------------
+
+: make-openable ( path )
+  find-dev if
+    begin ?dup while
+      \ install trivial open and close methods
+      dup active-package! is-open
+      parent
+    repeat
+  then
+;
+
+: preopen ( chosen-str node-path )
+  2dup make-openable
+
+  " /chosen" find-device
+  open-dev ?dup if
+    encode-int 2swap property
+  else
+    2drop
+  then
+;
+
+\ preopen device nodes (and store the ihandles under /chosen)
+:noname
+  " rtc" " /pci/isa/rtc" preopen
+  " memory" " /memory" preopen
+  " mmu" " /cpu at 0" preopen
+  \ " stdout" " /packages/terminal-emulator" preopen
+  " stdout" " /pci/pci6666,6666" preopen
+  " stdin" " /pci/via-cuda/adb" preopen
+
+; SYSTEM-initializer
+
+
+\ -------------------------------------------------------------------------
+\ device tree fixing
+\ -------------------------------------------------------------------------
+
+\ add decode-address methods
+: (make-decodable) ( phandle -- )
+
+    dup " #address-cells" rot get-package-property 0= if
+      decode-int nip nip
+      over " decode-unit" rot find-method if 2drop else
+        ( save phandle ncells )
+
+        over active-package!
+        case
+          1 of ['] parse-hex " decode-unit" is-xt-func endof
+          3 of
+            " bus-range" active-package get-package-property 0= if
+              decode-int nip nip
+              ['] encode-unit-pci " encode-unit" is-xt-func
+              " decode-unit" is-func-begin
+                ['] (lit) , ,
+                ['] decode-unit-pci-bus ,
+              is-func-end
+            then
+          endof
+        endcase
+      then
+    then
+    drop
+;
+
+: init-qemu-tree ( -- )
+  active-package
+
+  iterate-tree-begin
+  begin ?dup while
+
+    dup (make-decodable)
+
+    iterate-tree
+  repeat
+
+  active-package!
+;
+
+\ use the tty interface if available
+: activate-tty-interface
+  " /packages/terminal-emulator" find-dev if drop
+    " /pci/via-cuda/adb" " input-device" $setenv
+    " /pci/pci6666,6666" " output-device" $setenv
+  then
+;
+
+:noname
+  " keyboard" input
+; CONSOLE-IN-initializer
+
+
+\ -------------------------------------------------------------------------
+\ pre-booting
+\ -------------------------------------------------------------------------
+
+: update-chosen
+  " /chosen" find-device
+  stdin @ encode-int " stdin" property
+  stdout @ encode-int " stdout" property
+  " /pci/isa/interrupt-controller" find-dev if encode-int " interrupt-controller" property then
+  device-end
+;

Added: openbios-devel/arch/ppc/qemu/qemu.h
===================================================================
--- openbios-devel/arch/ppc/qemu/qemu.h	                        (rev 0)
+++ openbios-devel/arch/ppc/qemu/qemu.h	2008-11-24 12:16:22 UTC (rev 253)
@@ -0,0 +1,26 @@
+/*
+ *   Creation Date: <2004/08/28 17:50:12 stepan>
+ *   Time-stamp: <2004/08/28 17:50:12 stepan>
+ *
+ *	<qemu.h>
+ *
+ *   Copyright (C) 2005 Stefan Reinauer
+ *
+ *   This program is free software; you can redistribute it and/or
+ *   modify it under the terms of the GNU General Public License
+ *   version 2
+ *
+ */
+
+#ifndef _H_QEMU
+#define _H_QEMU
+
+/* vfd.c */
+extern int		vfd_draw_str( const char *str );
+extern void		vfd_close( void );
+
+extern int                console_draw_str( const char *str );
+
+#include "kernel.h"
+
+#endif   /* _H_QEMU */

Added: openbios-devel/arch/ppc/qemu/tree.c
===================================================================
--- openbios-devel/arch/ppc/qemu/tree.c	                        (rev 0)
+++ openbios-devel/arch/ppc/qemu/tree.c	2008-11-24 12:16:22 UTC (rev 253)
@@ -0,0 +1,23 @@
+/*
+ *   Creation Date: <2004/08/28 18:38:22 greg>
+ *   Time-stamp: <2004/08/28 18:38:22 greg>
+ *
+ *	<tree.c>
+ *
+ *	device tree setup
+ *
+ *   Copyright (C) 2004 Greg Watson
+ *
+ *   This program is free software; you can redistribute it and/or
+ *   modify it under the terms of the GNU General Public License
+ *   version 2
+ *
+ */
+
+#include "openbios/config.h"
+#include "openbios/bindings.h"
+
+void devtree_init( void )
+{
+	fword("init-qemu-tree");
+}

Added: openbios-devel/arch/ppc/qemu/tree.fs
===================================================================
--- openbios-devel/arch/ppc/qemu/tree.fs	                        (rev 0)
+++ openbios-devel/arch/ppc/qemu/tree.fs	2008-11-24 12:16:22 UTC (rev 253)
@@ -0,0 +1,247 @@
+\   Qemu specific initialization code
+\
+\   Copyright (C) 2005 Stefan Reinauer
+\
+\   This program is free software; you can redistribute it and/or
+\   modify it under the terms of the GNU General Public License
+\   as published by the Free Software Foundation
+\
+
+\ -------------------------------------------------------------
+\ device-tree
+\ -------------------------------------------------------------
+
+" /" find-device
+
+" chrp" device-type
+" OpenSource,QEMU" model
+h# 80000000 encode-int " isa-io-base" property
+1 encode-int " #interrupt-cells" property
+1 encode-int " #size-cells" property
+
+new-device
+	" memory" device-name
+	" memory" device-type
+	0 encode-int h# 1E00000 encode-int encode+
+	h# 2000000 encode-int encode+ h# 40000000 encode-int encode+
+	  " available" property
+	0 h# 40000000 reg
+	external
+	: open true ;
+	: close ;
+finish-device
+
+new-device
+	" cpu" device-name
+	" cpu" device-type
+	" " encode-string " translations" property
+	0 encode-phys h# 8000000 encode-int encode+ " available" property
+	d# 32 encode-int " d-cache-block-size" property
+	8 encode-int " d-cache-sets" property
+	d# 32768 encode-int " d-cache-size" property
+	d# 32 encode-int " i-cache-block-size" property
+	8 encode-int " i-cache-sets" property
+	d# 32768 encode-int " i-cache-size" property
+	" " encode-string " cache-unified" property
+	2 encode-int " i-tlb-sets" property
+	d# 128 encode-int " i-tlb-size" property
+	2 encode-int " d-tlb-sets" property
+	d# 128 encode-int " d-tlb-size" property
+	" " encode-string " tlb-split" property
+	2 encode-int " tlb-sets" property
+	d# 256 encode-int " tlb-size" property
+	" " encode-string " performance-monitor" property
+	" " encode-string " graphics" property
+	4 encode-int " reservation-granule-size" property
+        d# 25000000 encode-int " timebase-frequency" property
+        d# 300000000 encode-int " clock-frequency" property
+        d# 66000000 encode-int " bus-frequency" property
+        h# 88201 encode-int " cpu-version" property
+	0 encode-int " reg" property
+finish-device
+
+" /pci" find-device
+	h# 01000000 encode-int 0 encode-int encode+ 0 encode-int encode+
+	  h# 80000000 encode-int encode+ 0 encode-int encode+
+	  h# 01000000 encode-int encode+
+	h# 02000000 encode-int encode+ 0 encode-int encode+ 0 encode-int encode+
+	  h# C0000000 encode-int encode+ 0 encode-int encode+
+	  h# 08000000 encode-int encode+
+	" ranges" property
+	" IBM,CPC710" model
+	h# FF5F7700 encode-int " 8259-interrupt-acknowledge" property
+	h# 0000F800 encode-int 0 encode-int encode+ 0 encode-int encode+
+	  7 encode-int encode+
+	  " interrupt-map-mask" property
+	1 encode-int " #interrupt-cells" property
+	h# 80000000 encode-int " system-dma-base" property
+	d# 33333333 encode-int " clock-frequency" property
+	" " encode-string " primary-bridge" property
+	0 encode-int " pci-bridge-number" property
+	h# FEC00000 encode-int h# 100000 encode-int encode+ " reg" property
+	0 encode-int 0 encode-int encode+ " bus-range" property
+
+new-device
+	" ide" device-name
+	" ide" device-type
+	" WINBOND,82C553" model
+	h# 28 encode-int " max-latency" property
+	h# 2 encode-int " min-grant" property
+	h# 1 encode-int " devsel-speed" property
+	h# 0 encode-int " subsystem-vendor-id" property
+	h# 0 encode-int " subsystem-id" property
+	h# 1018A encode-int " class-code" property
+	h# 5 encode-int " revision-id" property
+	h# 105 encode-int " device-id" property
+	h# 10AD encode-int " vendor-id" property
+	h# 1003110 encode-int 0 encode-int encode+ h# 10020 encode-int encode+
+	  h# 10 encode-int encode+ 0 encode-int encode+
+	  h# 1003114 encode-int 0 encode-int encode+ h# 10030 encode-int encode+
+	  h# 4 encode-int encode+ 0 encode-int encode+
+	  h# 1003118 encode-int 0 encode-int encode+ h# 10040 encode-int encode+
+	  h# 10 encode-int encode+ 0 encode-int encode+
+	  h# 100311C encode-int 0 encode-int encode+ h# 10034 encode-int encode+
+	  h# 4 encode-int encode+ 0 encode-int encode+
+	  h# 1003120 encode-int 0 encode-int encode+ h# 10050 encode-int encode+
+	  h# 10 encode-int encode+ 0 encode-int encode+
+	  h# 1003124 encode-int 0 encode-int encode+ h# 10060 encode-int encode+
+	  h# 10 encode-int encode+ 0 encode-int encode+
+	  " assigned-addresses" property
+	h# 3100 encode-int 0 encode-int encode+ 0 encode-int encode+
+	  0 encode-int encode+ 0 encode-int encode+
+	  h# 1003110 encode-int 0 encode-int encode+ h# 0 encode-int encode+
+	  h# 10 encode-int encode+ 0 encode-int encode+
+	  h# 1003114 encode-int 0 encode-int encode+ h# 0 encode-int encode+
+	  h# 4 encode-int encode+ 0 encode-int encode+
+	  h# 1003118 encode-int 0 encode-int encode+ h# 0 encode-int encode+
+	  h# 10 encode-int encode+ 0 encode-int encode+
+	  h# 100311C encode-int 0 encode-int encode+ h# 0 encode-int encode+
+	  h# 4 encode-int encode+ 0 encode-int encode+
+	  h# 1003120 encode-int 0 encode-int encode+ h# 0 encode-int encode+
+	  h# 10 encode-int encode+ 0 encode-int encode+
+	  h# 1003124 encode-int 0 encode-int encode+ h# 0 encode-int encode+
+	  h# 10 encode-int encode+ 0 encode-int encode+
+	  " reg" property
+finish-device
+
+new-device
+	" ethernet" device-name
+	" network" device-type
+	" AMD,79C973" model
+	h# 3800 encode-int 0 encode-int encode+ 0 encode-int encode+
+	  0 encode-int encode+ 0 encode-int encode+
+	  " reg" property
+finish-device
+
+" /pci/isa" find-device
+	0 0 " assigned-addresses" property
+	0 0 " ranges" property
+	0 encode-int " slot-names" property
+	d# 8333333 encode-int " clock-frequency" property
+	0 encode-int " eisa-slots" property
+	2 encode-int " #interrupt-cells" property
+	" W83C553F" encode-string " compatible" property
+	" WINBOND,82C553" model
+	0 encode-int " max-latency" property
+	0 encode-int " min-grant" property
+	1 encode-int " devsel-speed" property
+	0 encode-int " subsystem-vendor-id" property
+	0 encode-int " subsystem-id" property
+	h# 60100 encode-int " class-code" property
+	h# 10 encode-int " revision-id" property
+	h# 565 encode-int " device-id" property
+	h# 10AD encode-int " vendor-id" property
+	h# 3000 encode-int 0 encode-int encode+ 0 encode-int encode+
+	  0 encode-int encode+ 0 encode-int encode+ " reg" property
+
+new-device
+	" rtc" device-name
+	" rtc" device-type
+	" DS17285S" model
+	" MC146818" encode-string
+	" DS17285S" encode-string encode+
+	" pnpPNP,b00" encode-string encode+ " compatible" property
+	8 encode-int 0 encode-int encode+ " interrupts" property
+	h# 70 encode-int 1 encode-int encode+
+	  2 encode-int encode+ " reg" property
+finish-device
+
+new-device
+	" interrupt-controller" device-name
+	" interrupt-controller" device-type
+	" 8259" model
+	" " encode-string " interrupt-controller" property
+	2 encode-int " #interrupt-cells" property
+	1 encode-int
+	2 encode-int encode+
+	3 encode-int encode+
+	6 encode-int encode+
+	  " reserved-interrupts" property
+	" 8259" encode-string
+	  " chrp,iic" encode-string encode+
+	  " compatible" property
+	h# 20 encode-int 1 encode-int encode+
+	  2 encode-int encode+ " reg" property
+finish-device
+
+new-device
+	" serial" device-name
+	" serial" device-type
+	" no" encode-string " ctsrts" property
+	" no" encode-string " xon" property
+	" no" encode-string " parity" property
+	d# 115200 encode-int " bps" property
+	1 encode-int " stop-bits" property
+	8 encode-int " data-bits" property
+	h# 70800 encode-int " divisor" property
+	h# 708000 encode-int " clock-frequency" property
+	4 encode-int 0 encode-int encode+ " interrupts" property
+	h# 3F8 encode-int 1 encode-int encode+
+	  8 encode-int encode+ " reg" property
+finish-device
+
+" /pci" find-device
+	" /pci/isa/interrupt-controller" find-dev if
+		encode-int " interrupt-parent" property
+	then
+	h# 3800 encode-int 0 encode-int encode+
+	  0 encode-int encode+ 1 encode-int encode+
+	  " /pci/isa/interrupt-controller" find-dev if
+		encode-int encode+
+	  then
+	  h# 0C encode-int encode+ 1 encode-int encode+
+	  " interrupt-map" property
+
+" /pci/isa" find-device
+	" /pci/isa/interrupt-controller" find-dev if
+		encode-int " interrupt-parent" property
+	then
+
+\ -------------------------------------------------------------
+\ /packages
+\ -------------------------------------------------------------
+
+" /packages" find-device
+
+	" packages" device-name
+	external
+	\ allow packages to be opened with open-dev
+	: open true ;
+	: close ;
+
+\ /packages/terminal-emulator
+new-device
+	" terminal-emulator" device-name
+	external
+	: open true ;
+	: close ;
+	\ : write ( addr len -- actual )
+	\	dup -rot type
+	\ ;
+finish-device
+
+\ -------------------------------------------------------------
+\ The END
+\ -------------------------------------------------------------
+device-end
+

Added: openbios-devel/arch/ppc/qemu/vfd.c
===================================================================
--- openbios-devel/arch/ppc/qemu/vfd.c	                        (rev 0)
+++ openbios-devel/arch/ppc/qemu/vfd.c	2008-11-24 12:16:22 UTC (rev 253)
@@ -0,0 +1,42 @@
+/*
+ *   Creation Date: <2004/08/28 17:29:43 greg>
+ *   Time-stamp: <2004/08/28 17:29:43 greg>
+ *
+ *	<vfd.c>
+ *
+ *	Simple text console
+ *
+ *   Copyright (C) 2004 Greg Watson
+ *
+ *   This program is free software; you can redistribute it and/or
+ *   modify it under the terms of the GNU General Public License
+ *   as published by the Free Software Foundation
+ *
+ */
+
+#include "openbios/config.h"
+#include "openbios/bindings.h"
+#include "qemu/qemu.h"
+
+static int vfd_is_open;
+
+static int
+vfd_init( void )
+{
+	vfd_is_open = 1;
+	return 0;
+}
+
+void
+vfd_close( void )
+{
+}
+
+int
+vfd_draw_str( const char *str )
+{
+	if (!vfd_is_open)
+		vfd_init();
+
+	return 0;
+}

Modified: openbios-devel/config/examples/cross-ppc_config.xml
===================================================================
--- openbios-devel/config/examples/cross-ppc_config.xml	2008-11-24 12:15:08 UTC (rev 252)
+++ openbios-devel/config/examples/cross-ppc_config.xml	2008-11-24 12:16:22 UTC (rev 253)
@@ -6,7 +6,8 @@
   <option name="CONFIG_PPC" type="boolean" value="true"/>
   <!--<option name="CONFIG_MOL" type="boolean" value="true"/>-->
   <!--<option name="CONFIG_BRIQ" type="boolean" value="true"/>-->
-  <option name="CONFIG_PEARPC" type="boolean" value="true"/>
+  <!--<option name="CONFIG_PEARPC" type="boolean" value="true"/>-->
+  <option name="CONFIG_QEMU" type="boolean" value="true"/>
   <option name="CONFIG_BIG_ENDIAN" type="boolean" value="true"/>
 
   <!-- Build hosted UNIX Binary -->
@@ -57,7 +58,7 @@
   <option name="CONFIG_DEBUG_FS" type="boolean" value="true"/>
   
   <!-- Miscellaneous -->
-  <option name="CONFIG_LINUXBIOS" type="boolean" value="true"/>
+  <option name="CONFIG_LINUXBIOS" type="boolean" value="false"/>
  
   <!-- Drivers -->
   <option name="CONFIG_DRIVER_PCI" type="boolean" value="true"/>




More information about the OpenBIOS mailing list