mirror of
https://gitlab.com/qemu-project/openbios.git
synced 2024-02-13 08:34:06 +08:00
Enable Sparc64 PCI probing, use probed display but not IDE
git-svn-id: svn://coreboot.org/openbios/openbios-devel@376 f158a5a8-5612-0410-a976-696ce0be7e32
This commit is contained in:
@@ -41,8 +41,9 @@
|
|||||||
<external-object source="target/arch/sparc64/entry.o"/>
|
<external-object source="target/arch/sparc64/entry.o"/>
|
||||||
<external-object source="libsparc64.a"/>
|
<external-object source="libsparc64.a"/>
|
||||||
<external-object source="libbootstrap.a"/>
|
<external-object source="libbootstrap.a"/>
|
||||||
<external-object source="libmodules.a"/>
|
|
||||||
<external-object source="libdrivers.a"/>
|
<external-object source="libdrivers.a"/>
|
||||||
|
<!-- Needs to be after drivers to avoid missing symbols -->
|
||||||
|
<external-object source="libmodules.a"/>
|
||||||
<external-object source="liblibc.a"/>
|
<external-object source="liblibc.a"/>
|
||||||
<external-object source="libfs.a"/>
|
<external-object source="libfs.a"/>
|
||||||
<external-object source="libgcc.a"/>
|
<external-object source="libgcc.a"/>
|
||||||
@@ -78,8 +79,9 @@
|
|||||||
<external-object source="target/arch/sparc64/builtin.o"/>
|
<external-object source="target/arch/sparc64/builtin.o"/>
|
||||||
<external-object source="libsparc64.a"/>
|
<external-object source="libsparc64.a"/>
|
||||||
<external-object source="libbootstrap.a"/>
|
<external-object source="libbootstrap.a"/>
|
||||||
<external-object source="libmodules.a"/>
|
|
||||||
<external-object source="libdrivers.a"/>
|
<external-object source="libdrivers.a"/>
|
||||||
|
<!-- Needs to be after drivers to avoid missing symbols -->
|
||||||
|
<external-object source="libmodules.a"/>
|
||||||
<external-object source="liblibc.a"/>
|
<external-object source="liblibc.a"/>
|
||||||
<external-object source="libfs.a"/>
|
<external-object source="libfs.a"/>
|
||||||
<external-object source="libgcc.a"/>
|
<external-object source="libgcc.a"/>
|
||||||
|
|||||||
@@ -122,141 +122,6 @@ static void serial_cls(void)
|
|||||||
* simple polling video/keyboard console functions
|
* simple polling video/keyboard console functions
|
||||||
* ****************************************************************** */
|
* ****************************************************************** */
|
||||||
|
|
||||||
#ifdef CONFIG_DEBUG_CONSOLE_VGA
|
|
||||||
|
|
||||||
/* raw vga text mode */
|
|
||||||
#define COLUMNS 80 /* The number of columns. */
|
|
||||||
#define LINES 25 /* The number of lines. */
|
|
||||||
#define ATTRIBUTE 7 /* The attribute of an character. */
|
|
||||||
|
|
||||||
#define APB_MEM_BASE 0x1ff00000000ULL
|
|
||||||
#define VGA_BASE (APB_MEM_BASE + 0x4a0000ULL) /* Beginning of video memory address. */
|
|
||||||
#define TEXT_BASE (VGA_BASE + 0x18000ULL) /* The text memory address. */
|
|
||||||
|
|
||||||
/* VGA Index and Data Registers */
|
|
||||||
#define VGA_REG_INDEX 0x03D4 /* VGA index register */
|
|
||||||
#define VGA_REG_DATA 0x03D5 /* VGA data register */
|
|
||||||
|
|
||||||
#define VGA_IDX_CURMSL 0x09 /* cursor maximum scan line */
|
|
||||||
#define VGA_IDX_CURSTART 0x0A /* cursor start */
|
|
||||||
#define VGA_IDX_CUREND 0x0B /* cursor end */
|
|
||||||
#define VGA_IDX_CURLO 0x0F /* cursor position (low 8 bits) */
|
|
||||||
#define VGA_IDX_CURHI 0x0E /* cursor position (high 8 bits) */
|
|
||||||
|
|
||||||
/* Save the X and Y position. */
|
|
||||||
static int xpos, ypos;
|
|
||||||
/* Point to the video memory. */
|
|
||||||
static unsigned char *video = (unsigned char *) TEXT_BASE;
|
|
||||||
|
|
||||||
static void video_initcursor(void)
|
|
||||||
{
|
|
||||||
u8 val;
|
|
||||||
outb(VGA_IDX_CURMSL, VGA_REG_INDEX);
|
|
||||||
val = inb(VGA_REG_DATA) & 0x1f; /* maximum scan line -1 */
|
|
||||||
|
|
||||||
outb(VGA_IDX_CURSTART, VGA_REG_INDEX);
|
|
||||||
outb(0, VGA_REG_DATA);
|
|
||||||
|
|
||||||
outb(VGA_IDX_CUREND, VGA_REG_INDEX);
|
|
||||||
outb(val, VGA_REG_DATA);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
static void video_poscursor(unsigned int x, unsigned int y)
|
|
||||||
{
|
|
||||||
unsigned short pos;
|
|
||||||
|
|
||||||
/* Calculate new cursor position as a function of x and y */
|
|
||||||
pos = (y * COLUMNS) + x;
|
|
||||||
|
|
||||||
/* Output the new position to VGA card */
|
|
||||||
outb(VGA_IDX_CURLO, VGA_REG_INDEX); /* output low 8 bits */
|
|
||||||
outb((u8) (pos), VGA_REG_DATA);
|
|
||||||
outb(VGA_IDX_CURHI, VGA_REG_INDEX); /* output high 8 bits */
|
|
||||||
outb((u8) (pos >> 8), VGA_REG_DATA);
|
|
||||||
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
static void video_newline(void)
|
|
||||||
{
|
|
||||||
xpos = 0;
|
|
||||||
|
|
||||||
if (ypos < LINES - 1) {
|
|
||||||
ypos++;
|
|
||||||
} else {
|
|
||||||
int i;
|
|
||||||
memmove((void *) video, (void *) (video + 2 * COLUMNS),
|
|
||||||
(LINES - 1) * COLUMNS * 2);
|
|
||||||
|
|
||||||
for (i = ((LINES - 1) * 2 * COLUMNS);
|
|
||||||
i < 2 * COLUMNS * LINES;) {
|
|
||||||
video[i++] = 0;
|
|
||||||
video[i++] = ATTRIBUTE;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Put the character C on the screen. */
|
|
||||||
static void video_putchar(int c)
|
|
||||||
{
|
|
||||||
int p=1;
|
|
||||||
|
|
||||||
if (c == '\n' || c == '\r') {
|
|
||||||
video_newline();
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (c == '\b') {
|
|
||||||
if (xpos) xpos--;
|
|
||||||
c=' ';
|
|
||||||
p=0;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
if (xpos >= COLUMNS)
|
|
||||||
video_newline();
|
|
||||||
|
|
||||||
*(video + (xpos + ypos * COLUMNS) * 2) = c & 0xFF;
|
|
||||||
*(video + (xpos + ypos * COLUMNS) * 2 + 1) = ATTRIBUTE;
|
|
||||||
|
|
||||||
if (p)
|
|
||||||
xpos++;
|
|
||||||
|
|
||||||
video_poscursor(xpos, ypos);
|
|
||||||
}
|
|
||||||
|
|
||||||
static void video_cls(void)
|
|
||||||
{
|
|
||||||
int i;
|
|
||||||
|
|
||||||
for (i = 0; i < 2 * COLUMNS * LINES;) {
|
|
||||||
video[i++] = 0;
|
|
||||||
video[i++] = ATTRIBUTE;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
xpos = 0;
|
|
||||||
ypos = 0;
|
|
||||||
|
|
||||||
video_initcursor();
|
|
||||||
video_poscursor(xpos, ypos);
|
|
||||||
}
|
|
||||||
|
|
||||||
void video_init(void)
|
|
||||||
{
|
|
||||||
video=(unsigned char *)TEXT_BASE;
|
|
||||||
|
|
||||||
#ifdef CONFIG_DRIVER_VGA
|
|
||||||
vga_load_regs();
|
|
||||||
vga_font_load((unsigned char *)VGA_BASE, fontdata_8x16,
|
|
||||||
FONT_HEIGHT_8X16, 256);
|
|
||||||
vga_set_amode();
|
|
||||||
#endif
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* keyboard driver
|
* keyboard driver
|
||||||
*/
|
*/
|
||||||
@@ -373,8 +238,6 @@ static unsigned char keyboard_readdata(void)
|
|||||||
last_key = 0;
|
last_key = 0;
|
||||||
return tmp;
|
return tmp;
|
||||||
}
|
}
|
||||||
#endif
|
|
||||||
|
|
||||||
|
|
||||||
/* ******************************************************************
|
/* ******************************************************************
|
||||||
* common functions, implementing simple concurrent console
|
* common functions, implementing simple concurrent console
|
||||||
@@ -384,9 +247,6 @@ int putchar(int c)
|
|||||||
{
|
{
|
||||||
#ifdef CONFIG_DEBUG_CONSOLE_SERIAL
|
#ifdef CONFIG_DEBUG_CONSOLE_SERIAL
|
||||||
serial_putchar(c);
|
serial_putchar(c);
|
||||||
#endif
|
|
||||||
#ifdef CONFIG_DEBUG_CONSOLE_VGA
|
|
||||||
video_putchar(c);
|
|
||||||
#endif
|
#endif
|
||||||
return c;
|
return c;
|
||||||
}
|
}
|
||||||
@@ -422,9 +282,6 @@ void cls(void)
|
|||||||
#ifdef CONFIG_DEBUG_CONSOLE_SERIAL
|
#ifdef CONFIG_DEBUG_CONSOLE_SERIAL
|
||||||
serial_cls();
|
serial_cls();
|
||||||
#endif
|
#endif
|
||||||
#ifdef CONFIG_DEBUG_CONSOLE_VGA
|
|
||||||
video_cls();
|
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif // CONFIG_DEBUG_CONSOLE
|
#endif // CONFIG_DEBUG_CONSOLE
|
||||||
|
|||||||
@@ -36,12 +36,12 @@
|
|||||||
; SYSTEM-initializer
|
; SYSTEM-initializer
|
||||||
|
|
||||||
\ use the tty interface if available
|
\ use the tty interface if available
|
||||||
:noname
|
: activate-tty-interface
|
||||||
" /builtin/console" find-dev if drop
|
" /packages/terminal-emulator" find-dev if drop
|
||||||
" /builtin/console" " input-device" $setenv
|
" keyboard" " input-device" $setenv
|
||||||
" /builtin/console" " output-device" $setenv
|
" screen" " output-device" $setenv
|
||||||
then
|
then
|
||||||
; SYSTEM-initializer
|
;
|
||||||
|
|
||||||
:noname
|
:noname
|
||||||
" keyboard" input
|
" keyboard" input
|
||||||
|
|||||||
@@ -34,7 +34,6 @@
|
|||||||
#define NVRAM_DATA 0x77
|
#define NVRAM_DATA 0x77
|
||||||
|
|
||||||
#define APB_SPECIAL_BASE 0x1fe00000000ULL
|
#define APB_SPECIAL_BASE 0x1fe00000000ULL
|
||||||
#define PCI_CONFIG (APB_SPECIAL_BASE + 0x1000000ULL)
|
|
||||||
#define APB_MEM_BASE 0x1ff00000000ULL
|
#define APB_MEM_BASE 0x1ff00000000ULL
|
||||||
|
|
||||||
#define MEMORY_SIZE (512*1024) /* 512K ram for hosted system */
|
#define MEMORY_SIZE (512*1024) /* 512K ram for hosted system */
|
||||||
@@ -64,11 +63,18 @@ struct hwdef {
|
|||||||
static const struct hwdef hwdefs[] = {
|
static const struct hwdef hwdefs[] = {
|
||||||
{
|
{
|
||||||
.pci = {
|
.pci = {
|
||||||
.cfg_addr = PCI_CONFIG,
|
.name = "SUNW,sabre",
|
||||||
.cfg_data = 0,
|
.vendor_id = 0x108e,
|
||||||
|
.device_id = 0xa000,
|
||||||
|
.cfg_addr = APB_SPECIAL_BASE + 0x1000000ULL,
|
||||||
|
.cfg_data = APB_MEM_BASE,
|
||||||
.cfg_base = 0x80000000ULL,
|
.cfg_base = 0x80000000ULL,
|
||||||
.cfg_len = 0,
|
.cfg_len = 0,
|
||||||
.irqs = { 1, 2, 3, 4 },
|
.mem_base = APB_MEM_BASE + 0x400000ULL,
|
||||||
|
.mem_len = 0x10000000,
|
||||||
|
.io_base = APB_SPECIAL_BASE + 0x2000000ULL,
|
||||||
|
.io_len = 0x10000,
|
||||||
|
.irqs = { 0, 1, 2, 3 },
|
||||||
},
|
},
|
||||||
.machine_id_low = 0,
|
.machine_id_low = 0,
|
||||||
.machine_id_high = 255,
|
.machine_id_high = 255,
|
||||||
@@ -243,7 +249,7 @@ fw_cfg_read(uint16_t cmd, char *buf, unsigned int nbytes)
|
|||||||
{
|
{
|
||||||
unsigned int i;
|
unsigned int i;
|
||||||
|
|
||||||
outw(__cpu_to_le16(cmd), BIOS_CFG_CMD);
|
outw(cmd, BIOS_CFG_CMD);
|
||||||
for (i = 0; i < nbytes; i++)
|
for (i = 0; i < nbytes; i++)
|
||||||
buf[i] = inb(BIOS_CFG_DATA);
|
buf[i] = inb(BIOS_CFG_DATA);
|
||||||
}
|
}
|
||||||
@@ -457,36 +463,16 @@ static void init_memory(void)
|
|||||||
static void
|
static void
|
||||||
arch_init( void )
|
arch_init( void )
|
||||||
{
|
{
|
||||||
unsigned int i;
|
|
||||||
uint16_t machine_id;
|
|
||||||
const struct hwdef *hwdef = NULL;
|
|
||||||
|
|
||||||
machine_id = fw_cfg_read_i16(FW_CFG_MACHINE_ID);
|
|
||||||
|
|
||||||
for (i = 0; i < sizeof(hwdefs) / sizeof(struct hwdef); i++) {
|
|
||||||
if (hwdefs[i].machine_id_low <= machine_id &&
|
|
||||||
hwdefs[i].machine_id_high >= machine_id) {
|
|
||||||
hwdef = &hwdefs[i];
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (!hwdef)
|
|
||||||
for(;;); // Internal inconsistency, hang
|
|
||||||
|
|
||||||
modules_init();
|
modules_init();
|
||||||
#ifdef CONFIG_DRIVER_PCI
|
// XXX use PCI IDE
|
||||||
//ob_pci_init();
|
|
||||||
#endif
|
|
||||||
#ifdef CONFIG_DRIVER_IDE
|
|
||||||
setup_timers();
|
setup_timers();
|
||||||
ob_ide_init("/pci/isa", 0x1f0, 0x3f4, 0x170, 0x374);
|
ob_ide_init("/pci/isa", 0x1f0, 0x3f4, 0x170, 0x374);
|
||||||
|
#ifdef CONFIG_DRIVER_PCI
|
||||||
|
ob_pci_init();
|
||||||
#endif
|
#endif
|
||||||
#ifdef CONFIG_DRIVER_FLOPPY
|
#ifdef CONFIG_DRIVER_FLOPPY
|
||||||
ob_floppy_init();
|
ob_floppy_init();
|
||||||
#endif
|
#endif
|
||||||
#ifdef CONFIG_DEBUG_CONSOLE_VIDEO
|
|
||||||
init_video();
|
|
||||||
#endif
|
|
||||||
|
|
||||||
nvconf_init();
|
nvconf_init();
|
||||||
ob_su_init(0x1fe02000000ULL, 0x3f8ULL, 0);
|
ob_su_init(0x1fe02000000ULL, 0x3f8ULL, 0);
|
||||||
@@ -494,17 +480,33 @@ arch_init( void )
|
|||||||
device_end();
|
device_end();
|
||||||
|
|
||||||
bind_func("platform-boot", boot );
|
bind_func("platform-boot", boot );
|
||||||
printk("\n"); // XXX needed for boot, why?
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
unsigned long isa_io_base;
|
||||||
|
|
||||||
int openbios(void)
|
int openbios(void)
|
||||||
{
|
{
|
||||||
|
unsigned int i;
|
||||||
|
uint16_t machine_id;
|
||||||
|
const struct hwdef *hwdef = NULL;
|
||||||
|
|
||||||
|
|
||||||
|
for (i = 0; i < sizeof(hwdefs) / sizeof(struct hwdef); i++) {
|
||||||
|
isa_io_base = hwdefs[i].pci.io_base;
|
||||||
|
machine_id = fw_cfg_read_i16(FW_CFG_MACHINE_ID);
|
||||||
|
if (hwdefs[i].machine_id_low <= machine_id &&
|
||||||
|
hwdefs[i].machine_id_high >= machine_id) {
|
||||||
|
hwdef = &hwdefs[i];
|
||||||
|
arch = &hwdefs[i].pci;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (!hwdef)
|
||||||
|
for(;;); // Internal inconsistency, hang
|
||||||
|
|
||||||
#ifdef CONFIG_DEBUG_CONSOLE
|
#ifdef CONFIG_DEBUG_CONSOLE
|
||||||
#ifdef CONFIG_DEBUG_CONSOLE_SERIAL
|
#ifdef CONFIG_DEBUG_CONSOLE_SERIAL
|
||||||
uart_init(CONFIG_SERIAL_PORT, CONFIG_SERIAL_SPEED);
|
uart_init(CONFIG_SERIAL_PORT, CONFIG_SERIAL_SPEED);
|
||||||
#endif
|
|
||||||
#ifdef CONFIG_DEBUG_CONSOLE_VGA
|
|
||||||
video_init();
|
|
||||||
#endif
|
#endif
|
||||||
/* Clear the screen. */
|
/* Clear the screen. */
|
||||||
cls();
|
cls();
|
||||||
|
|||||||
@@ -33,54 +33,16 @@ finish-device
|
|||||||
" /openprom" find-device
|
" /openprom" find-device
|
||||||
" OBP 3.10.24 1999/01/01 01:01" encode-string " version" property
|
" OBP 3.10.24 1999/01/01 01:01" encode-string " version" property
|
||||||
|
|
||||||
device-end
|
|
||||||
|
|
||||||
\ we only implement DD and DD,F
|
|
||||||
: encode-unit-pci ( phys.lo phy.mid phys.hi -- str len )
|
|
||||||
nip nip ff00 and 8 >> dup 3 >>
|
|
||||||
swap 7 and
|
|
||||||
( ddddd fff )
|
|
||||||
|
|
||||||
?dup if
|
|
||||||
pocket tohexstr
|
|
||||||
" ," pocket tmpstrcat
|
|
||||||
else
|
|
||||||
0 0 pocket tmpstrcpy
|
|
||||||
then
|
|
||||||
>r
|
|
||||||
rot pocket tohexstr r> tmpstrcat drop
|
|
||||||
;
|
|
||||||
|
|
||||||
dev /
|
dev /
|
||||||
|
|
||||||
\ simple pci bus node
|
\ simple pci bus node
|
||||||
new-device
|
new-device
|
||||||
" pci" device-name
|
" pci" device-name
|
||||||
3 encode-int " #address-cells" property
|
|
||||||
2 encode-int " #size-cells" property
|
|
||||||
0 encode-int 0 encode-int encode+ " bus-range" property
|
|
||||||
" pci" encode-string " device_type" property
|
|
||||||
|
|
||||||
external
|
|
||||||
: open ( cr ." opening PCI" cr ) true ;
|
|
||||||
: close ;
|
|
||||||
: decode-unit 0 decode-unit-pci-bus ;
|
|
||||||
: encode-unit encode-unit-pci ;
|
|
||||||
finish-device
|
finish-device
|
||||||
|
|
||||||
device-end
|
|
||||||
|
|
||||||
dev /pci
|
dev /pci
|
||||||
|
|
||||||
\ simple isa bus node
|
\ simple isa bus node
|
||||||
new-device
|
new-device
|
||||||
" isa" device-name
|
" isa" device-name
|
||||||
" isa" device-type
|
|
||||||
2 encode-int " #address-cells" property
|
|
||||||
1 encode-int " #size-cells" property
|
|
||||||
|
|
||||||
external
|
|
||||||
: open true ;
|
|
||||||
: close ;
|
|
||||||
|
|
||||||
finish-device
|
finish-device
|
||||||
|
|||||||
@@ -35,8 +35,8 @@
|
|||||||
<!-- Module Configuration -->
|
<!-- Module Configuration -->
|
||||||
<option name="CONFIG_CMDLINE" type="boolean" value="true"/>
|
<option name="CONFIG_CMDLINE" type="boolean" value="true"/>
|
||||||
<option name="CONFIG_DEBLOCKER" type="boolean" value="true"/>
|
<option name="CONFIG_DEBLOCKER" type="boolean" value="true"/>
|
||||||
<option name="CONFIG_FONT_8X8" type="boolean" value="false"/>
|
<option name="CONFIG_FONT_8X8" type="boolean" value="true"/>
|
||||||
<option name="CONFIG_FONT_8X16" type="boolean" value="true"/>
|
<option name="CONFIG_FONT_8X16" type="boolean" value="false"/>
|
||||||
|
|
||||||
<!-- Filesystem Configuration -->
|
<!-- Filesystem Configuration -->
|
||||||
<option name="CONFIG_DISK_LABEL" type="boolean" value="true"/>
|
<option name="CONFIG_DISK_LABEL" type="boolean" value="true"/>
|
||||||
@@ -67,7 +67,7 @@
|
|||||||
|
|
||||||
<!-- Drivers -->
|
<!-- Drivers -->
|
||||||
<option name="CONFIG_DRIVER_PCI" type="boolean" value="true"/>
|
<option name="CONFIG_DRIVER_PCI" type="boolean" value="true"/>
|
||||||
<option name="CONFIG_DEBUG_PCI" type="boolean" value="true"/>
|
<option name="CONFIG_DEBUG_PCI" type="boolean" value="false"/>
|
||||||
<option name="CONFIG_DRIVER_IDE" type="boolean" value="true"/>
|
<option name="CONFIG_DRIVER_IDE" type="boolean" value="true"/>
|
||||||
<option name="CONFIG_IDE_NUM_CHANNELS" type="integer" value="4"/>
|
<option name="CONFIG_IDE_NUM_CHANNELS" type="integer" value="4"/>
|
||||||
<option name="CONFIG_DEBUG_IDE" type="boolean" value="false"/>
|
<option name="CONFIG_DEBUG_IDE" type="boolean" value="false"/>
|
||||||
|
|||||||
@@ -35,8 +35,8 @@
|
|||||||
<!-- Module Configuration -->
|
<!-- Module Configuration -->
|
||||||
<option name="CONFIG_CMDLINE" type="boolean" value="true"/>
|
<option name="CONFIG_CMDLINE" type="boolean" value="true"/>
|
||||||
<option name="CONFIG_DEBLOCKER" type="boolean" value="true"/>
|
<option name="CONFIG_DEBLOCKER" type="boolean" value="true"/>
|
||||||
<option name="CONFIG_FONT_8X8" type="boolean" value="false"/>
|
<option name="CONFIG_FONT_8X8" type="boolean" value="true"/>
|
||||||
<option name="CONFIG_FONT_8X16" type="boolean" value="true"/>
|
<option name="CONFIG_FONT_8X16" type="boolean" value="false"/>
|
||||||
|
|
||||||
<!-- Filesystem Configuration -->
|
<!-- Filesystem Configuration -->
|
||||||
<option name="CONFIG_DISK_LABEL" type="boolean" value="true"/>
|
<option name="CONFIG_DISK_LABEL" type="boolean" value="true"/>
|
||||||
@@ -67,7 +67,7 @@
|
|||||||
|
|
||||||
<!-- Drivers -->
|
<!-- Drivers -->
|
||||||
<option name="CONFIG_DRIVER_PCI" type="boolean" value="true"/>
|
<option name="CONFIG_DRIVER_PCI" type="boolean" value="true"/>
|
||||||
<option name="CONFIG_DEBUG_PCI" type="boolean" value="true"/>
|
<option name="CONFIG_DEBUG_PCI" type="boolean" value="false"/>
|
||||||
<option name="CONFIG_DRIVER_IDE" type="boolean" value="true"/>
|
<option name="CONFIG_DRIVER_IDE" type="boolean" value="true"/>
|
||||||
<option name="CONFIG_IDE_NUM_CHANNELS" type="integer" value="4"/>
|
<option name="CONFIG_IDE_NUM_CHANNELS" type="integer" value="4"/>
|
||||||
<option name="CONFIG_DEBUG_IDE" type="boolean" value="false"/>
|
<option name="CONFIG_DEBUG_IDE" type="boolean" value="false"/>
|
||||||
|
|||||||
@@ -33,9 +33,7 @@ pa2va(unsigned long pa)
|
|||||||
|
|
||||||
#ifndef BOOTSTRAP
|
#ifndef BOOTSTRAP
|
||||||
|
|
||||||
#ifndef _IO_BASE
|
extern unsigned long isa_io_base;
|
||||||
#define _IO_BASE 0x1fe02000000ULL
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* The insw/outsw/insl/outsl macros don't do byte-swapping.
|
* The insw/outsw/insl/outsl macros don't do byte-swapping.
|
||||||
@@ -43,15 +41,15 @@ pa2va(unsigned long pa)
|
|||||||
* are arrays of bytes, and byte-swapping is not appropriate in
|
* are arrays of bytes, and byte-swapping is not appropriate in
|
||||||
* that case. - paulus
|
* that case. - paulus
|
||||||
*/
|
*/
|
||||||
#define insw(port, buf, ns) _insw_ns((uint16_t *)((port)+_IO_BASE), (buf), (ns))
|
#define insw(port, buf, ns) _insw_ns((uint16_t *)((port)+isa_io_base), (buf), (ns))
|
||||||
#define outsw(port, buf, ns) _outsw_ns((uint16_t *)((port)+_IO_BASE), (buf), (ns))
|
#define outsw(port, buf, ns) _outsw_ns((uint16_t *)((port)+isa_io_base), (buf), (ns))
|
||||||
|
|
||||||
#define inb(port) in_8((uint8_t *)((port)+_IO_BASE))
|
#define inb(port) in_8((uint8_t *)((port)+isa_io_base))
|
||||||
#define outb(val, port) out_8((uint8_t *)((port)+_IO_BASE), (val))
|
#define outb(val, port) out_8((uint8_t *)((port)+isa_io_base), (val))
|
||||||
#define inw(port) in_le16((uint16_t *)((port)+_IO_BASE))
|
#define inw(port) in_be16((uint16_t *)((port)+isa_io_base))
|
||||||
#define outw(val, port) out_le16((uint16_t *)((port)+_IO_BASE), (val))
|
#define outw(val, port) out_be16((uint16_t *)((port)+isa_io_base), (val))
|
||||||
#define inl(port) in_le32((uint32_t *)((port)+_IO_BASE))
|
#define inl(port) in_be32((uint32_t *)((port)+isa_io_base))
|
||||||
#define outl(val, port) out_le32((uint32_t *)((port)+_IO_BASE), (val))
|
#define outl(val, port) out_be32((uint32_t *)((port)+isa_io_base), (val))
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* 8, 16 and 32 bit, big and little endian I/O operations, with barrier.
|
* 8, 16 and 32 bit, big and little endian I/O operations, with barrier.
|
||||||
|
|||||||
Reference in New Issue
Block a user