--- 0001/arch/sh/boards/dreamcast/setup.c
+++ work/arch/sh/boards/dreamcast/setup.c	2008-02-18 17:05:45.000000000 +0900
@@ -43,8 +43,6 @@ static void __init dreamcast_setup(char 
 	/* Acknowledge any previous events */
 	/* XXX */
 
-	__set_io_port_base(0xa0000000);
-
 	/* Assign all virtual IRQs to the System ASIC int. handler */
 	for (i = HW_EVENT_IRQ_BASE; i < HW_EVENT_IRQ_MAX; i++)
 		irq_desc[i].chip = &systemasic_int;
--- 0001/arch/sh/drivers/pci/ops-dreamcast.c
+++ work/arch/sh/drivers/pci/ops-dreamcast.c	2008-02-18 17:06:19.000000000 +0900
@@ -29,8 +29,8 @@
 
 static struct resource gapspci_io_resource = {
 	.name	= "GAPSPCI IO",
-	.start	= GAPSPCI_BBA_CONFIG,
-	.end	= GAPSPCI_BBA_CONFIG + GAPSPCI_BBA_CONFIG_SIZE - 1,
+	.start	= 0,
+	.end	= GAPSPCI_BBA_CONFIG_SIZE - 1,
 	.flags	= IORESOURCE_IO,
 };
 
@@ -158,6 +158,8 @@ int __init gapspci_init(void)
 	ctrl_outl(0x00002001, GAPSPCI_BBA_CONFIG+0x10);
 	ctrl_outl(0x01000000, GAPSPCI_BBA_CONFIG+0x14);
 
+	__set_io_port_base(GAPSPCI_BBA_CONFIG);
+
 	return 0;
 }
 
--- 0001/include/asm-sh/dreamcast/pci.h
+++ work/include/asm-sh/dreamcast/pci.h	2008-02-18 17:18:10.000000000 +0900
@@ -11,12 +11,13 @@
 #ifndef __ASM_SH_DREAMCAST_PCI_H
 #define __ASM_SH_DREAMCAST_PCI_H
 
+#include <asm/addrspace.h>
 #include <asm/mach/sysasic.h>
 
-#define	GAPSPCI_REGS		0x01001400
-#define GAPSPCI_DMA_BASE	0x01840000
+#define GAPSPCI_REGS		P2SEGADDR(0x01001400)
+#define GAPSPCI_DMA_BASE	P2SEGADDR(0x01840000)
 #define GAPSPCI_DMA_SIZE	32768
-#define GAPSPCI_BBA_CONFIG	0x01001600
+#define GAPSPCI_BBA_CONFIG	P2SEGADDR(0x01001600)
 #define GAPSPCI_BBA_CONFIG_SIZE	0x2000
 
 #define	GAPSPCI_IRQ		HW_EVENT_EXTERNAL
