[OpenBIOS] r254 - in openbios-devel: arch/ppc/briq arch/ppc/mol arch/ppc/pearpc arch/ppc/qemu include/openbios include/ppc kernel
svn at openbios.org
svn at openbios.org
Mon Nov 24 13:19:06 CET 2008
Author: stepan
Date: 2008-11-24 13:19:05 +0100 (Mon, 24 Nov 2008)
New Revision: 254
Added:
openbios-devel/include/openbios/pci.h
Modified:
openbios-devel/arch/ppc/briq/init.c
openbios-devel/arch/ppc/mol/init.c
openbios-devel/arch/ppc/pearpc/init.c
openbios-devel/arch/ppc/qemu/init.c
openbios-devel/include/ppc/io.h
openbios-devel/kernel/forth.c
Log:
Define the ISA io base according machine type.
Signed-off-by: Laurent Vivier <Laurent at lvivier.info>
Acked-by: Stefan Reinauer <stepan at coresystems.de>
Modified: openbios-devel/arch/ppc/briq/init.c
===================================================================
--- openbios-devel/arch/ppc/briq/init.c 2008-11-24 12:16:22 UTC (rev 253)
+++ openbios-devel/arch/ppc/briq/init.c 2008-11-24 12:19:05 UTC (rev 254)
@@ -53,9 +53,13 @@
;
}
+uint32_t isa_io_base;
+
void
entry( void )
{
+ isa_io_base = 0x80000000;
+
printk("\n");
printk("=============================================================\n");
printk("OpenBIOS %s [%s]\n", OPENBIOS_RELEASE, OPENBIOS_BUILD_DATE );
Modified: openbios-devel/arch/ppc/mol/init.c
===================================================================
--- openbios-devel/arch/ppc/mol/init.c 2008-11-24 12:16:22 UTC (rev 253)
+++ openbios-devel/arch/ppc/mol/init.c 2008-11-24 12:19:05 UTC (rev 254)
@@ -48,9 +48,13 @@
;
}
+uint32_t isa_io_base;
+
void
entry( void )
{
+ isa_io_base = 0x80000000;
+
printk("\n");
printk("=============================================================\n");
printk("OpenBIOS %s [%s]\n", OPENBIOS_RELEASE, OPENBIOS_BUILD_DATE );
Modified: openbios-devel/arch/ppc/pearpc/init.c
===================================================================
--- openbios-devel/arch/ppc/pearpc/init.c 2008-11-24 12:16:22 UTC (rev 253)
+++ openbios-devel/arch/ppc/pearpc/init.c 2008-11-24 12:19:05 UTC (rev 254)
@@ -56,9 +56,13 @@
;
}
+uint32_t isa_io_base;
+
void
entry( void )
{
+ isa_io_base = 0x80000000;
+
printk("\n");
printk("=============================================================\n");
printk("OpenBIOS %s [%s]\n", OPENBIOS_RELEASE, OPENBIOS_BUILD_DATE );
Modified: openbios-devel/arch/ppc/qemu/init.c
===================================================================
--- openbios-devel/arch/ppc/qemu/init.c 2008-11-24 12:16:22 UTC (rev 253)
+++ openbios-devel/arch/ppc/qemu/init.c 2008-11-24 12:19:05 UTC (rev 254)
@@ -22,6 +22,7 @@
#include "openbios/config.h"
#include "openbios/bindings.h"
+#include "openbios/pci.h"
#include "openbios/nvram.h"
#include "qemu/qemu.h"
#include "ofmem.h"
@@ -33,21 +34,6 @@
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 )
{
@@ -56,9 +42,34 @@
;
}
+enum {
+ ARCH_PREP = 0,
+ ARCH_MAC99,
+ ARCH_HEATHROW,
+};
+
+pci_arch_t known_arch[] = {
+ [ARCH_PREP] = { "PREP", 0x1057, 0x4801, 0x80800000, 0x800c0000,
+ 0x80000000, 0x00100000, 0xf0000000, 0x10000000,
+ 0x80000000, 0x00010000, 0x00000000, 0x00400000,
+ },
+ [ARCH_MAC99] = { "MAC99", 0x106b, 0x001F, 0xf2800000, 0xf2c00000,
+ 0xf2000000, 0x02000000, 0x80000000, 0x10000000,
+ 0xf2000000, 0x00800000, 0x00000000, 0x01000000,
+ },
+ [ARCH_HEATHROW] = { "HEATHROW", 0x1057, 0x0002, 0xfec00000, 0xfee00000,
+ 0x80000000, 0x7f000000, 0x80000000, 0x01000000,
+ 0xfe000000, 0x00800000, 0xfd000000, 0x01000000,
+ },
+};
+pci_arch_t *arch;
+uint32_t isa_io_base;
+
void
entry( void )
{
+ arch = &known_arch[ARCH_HEATHROW];
+ isa_io_base = arch->io_base;
printk("\n");
printk("=============================================================\n");
printk("OpenBIOS %s [%s]\n", OPENBIOS_RELEASE, OPENBIOS_BUILD_DATE );
@@ -115,10 +126,9 @@
set_property( ph, "rtas-size", (char*)&size, sizeof(size) );
}
#endif
-
#if 0
/* tweak boot settings */
- autoboot = !!get_bool_res("autoboot");
+ autoboot = !!getbool("autoboot?");
#endif
autoboot = 0;
if( !autoboot )
@@ -127,7 +137,7 @@
setenv("boot-command", "qemuboot");
#if 0
- if( get_bool_res("tty-interface") == 1 )
+ if( getbool("tty-interface?") == 1 )
#endif
fword("activate-tty-interface");
Added: openbios-devel/include/openbios/pci.h
===================================================================
--- openbios-devel/include/openbios/pci.h (rev 0)
+++ openbios-devel/include/openbios/pci.h 2008-11-24 12:19:05 UTC (rev 254)
@@ -0,0 +1,22 @@
+#ifndef _H_PCI
+#define _H_PCI
+
+typedef struct pci_arch_t pci_arch_t;
+
+struct pci_arch_t {
+ char * name;
+ uint16_t vendor_id;
+ uint16_t device_id;
+ uint32_t cfg_addr;
+ uint32_t cfg_data;
+ uint32_t cfg_base;
+ uint32_t cfg_len;
+ uint32_t mem_base;
+ uint32_t mem_len;
+ uint32_t io_base;
+ uint32_t io_len;
+ uint32_t rbase;
+ uint32_t rlen;
+};
+
+#endif /* _H_PCI */
Modified: openbios-devel/include/ppc/io.h
===================================================================
--- openbios-devel/include/ppc/io.h 2008-11-24 12:16:22 UTC (rev 253)
+++ openbios-devel/include/ppc/io.h 2008-11-24 12:19:05 UTC (rev 254)
@@ -10,9 +10,7 @@
#ifndef BOOTSTRAP
-#ifndef _IO_BASE
-#define _IO_BASE 0x80000000
-#endif
+extern uint32_t isa_io_base;
/*
* The insw/outsw/insl/outsl macros don't do byte-swapping.
@@ -20,15 +18,15 @@
* are arrays of bytes, and byte-swapping is not appropriate in
* that case. - paulus
*/
-#define insw(port, buf, ns) _insw_ns((uint16_t *)((port)+_IO_BASE), (buf), (ns))
-#define outsw(port, buf, ns) _outsw_ns((uint16_t *)((port)+_IO_BASE), (buf), (ns))
+#define insw(port, buf, ns) _insw((uint16_t *)((port)+isa_io_base), (buf), (ns))
+#define outsw(port, buf, ns) _outsw((uint16_t *)((port)+isa_io_base), (buf), (ns))
-#define inb(port) in_8((uint8_t *)((port)+_IO_BASE))
-#define outb(val, port) out_8((uint8_t *)((port)+_IO_BASE), (val))
-#define inw(port) in_le16((uint16_t *)((port)+_IO_BASE))
-#define outw(val, port) out_le16((uint16_t *)((port)+_IO_BASE), (val))
-#define inl(port) in_le32((uint32_t *)((port)+_IO_BASE))
-#define outl(val, port) out_le32((uint32_t *)((port)+_IO_BASE), (val))
+#define inb(port) in_8((uint8_t *)((port)+isa_io_base))
+#define outb(val, port) out_8((uint8_t *)((port)+isa_io_base), (val))
+#define inw(port) in_le16((uint16_t *)((port)+isa_io_base))
+#define outw(val, port) out_le16((uint16_t *)((port)+isa_io_base), (val))
+#define inl(port) in_le32((uint32_t *)((port)+isa_io_base))
+#define outl(val, port) out_le32((uint32_t *)((port)+isa_io_base), (val))
/*
* 8, 16 and 32 bit, big and little endian I/O operations, with barrier.
Modified: openbios-devel/kernel/forth.c
===================================================================
--- openbios-devel/kernel/forth.c 2008-11-24 12:16:22 UTC (rev 253)
+++ openbios-devel/kernel/forth.c 2008-11-24 12:19:05 UTC (rev 254)
@@ -6,6 +6,7 @@
* the copyright and warranty status of this work.
*/
+extern uint32_t isa_io_base;
/*
* dup ( x -- x x )
More information about the OpenBIOS
mailing list