mirror of
https://gitlab.com/qemu-project/openbios.git
synced 2024-02-13 08:34:06 +08:00
Define the ISA io base according machine type.
Signed-off-by: Laurent Vivier <Laurent@lvivier.info> Acked-by: Stefan Reinauer <stepan@coresystems.de> git-svn-id: svn://coreboot.org/openbios/openbios-devel@254 f158a5a8-5612-0410-a976-696ce0be7e32
This commit is contained in:
committed by
Stefan Reinauer
parent
fe82df644b
commit
c619e7c4a1
@@ -53,9 +53,13 @@ unexpected_excep( int vector )
|
||||
;
|
||||
}
|
||||
|
||||
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 );
|
||||
|
||||
@@ -48,9 +48,13 @@ unexpected_excep( int vector )
|
||||
;
|
||||
}
|
||||
|
||||
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 );
|
||||
|
||||
@@ -56,9 +56,13 @@ unexpected_excep( int vector )
|
||||
;
|
||||
}
|
||||
|
||||
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 );
|
||||
|
||||
@@ -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_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 )
|
||||
{
|
||||
@@ -56,9 +42,34 @@ unexpected_excep( int vector )
|
||||
;
|
||||
}
|
||||
|
||||
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 @@ arch_of_init( void )
|
||||
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 @@ arch_of_init( void )
|
||||
setenv("boot-command", "qemuboot");
|
||||
|
||||
#if 0
|
||||
if( get_bool_res("tty-interface") == 1 )
|
||||
if( getbool("tty-interface?") == 1 )
|
||||
#endif
|
||||
fword("activate-tty-interface");
|
||||
|
||||
|
||||
22
include/openbios/pci.h
Normal file
22
include/openbios/pci.h
Normal file
@@ -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 */
|
||||
@@ -10,9 +10,7 @@ extern unsigned long virt_offset;
|
||||
|
||||
#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 @@ extern unsigned long virt_offset;
|
||||
* 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.
|
||||
|
||||
@@ -6,6 +6,7 @@
|
||||
* the copyright and warranty status of this work.
|
||||
*/
|
||||
|
||||
extern uint32_t isa_io_base;
|
||||
|
||||
/*
|
||||
* dup ( x -- x x )
|
||||
|
||||
Reference in New Issue
Block a user