aboutsummaryrefslogtreecommitdiff
path: root/libpsn00b/include/hwregs_c.h
diff options
context:
space:
mode:
Diffstat (limited to 'libpsn00b/include/hwregs_c.h')
-rw-r--r--libpsn00b/include/hwregs_c.h61
1 files changed, 29 insertions, 32 deletions
diff --git a/libpsn00b/include/hwregs_c.h b/libpsn00b/include/hwregs_c.h
index 0e21922..7015101 100644
--- a/libpsn00b/include/hwregs_c.h
+++ b/libpsn00b/include/hwregs_c.h
@@ -8,15 +8,20 @@
#include <stdint.h>
-#define _MMIO8(addr) *((volatile uint8_t *) (addr))
-#define _MMIO16(addr) *((volatile uint16_t *) (addr))
-#define _MMIO32(addr) *((volatile uint32_t *) (addr))
+#define _ADDR8(addr) ((volatile uint8_t *) (addr))
+#define _ADDR16(addr) ((volatile uint16_t *) (addr))
+#define _ADDR32(addr) ((volatile uint32_t *) (addr))
+#define _MMIO8(addr) (*_ADDR8(addr))
+#define _MMIO16(addr) (*_ADDR16(addr))
+#define _MMIO32(addr) (*_ADDR32(addr))
/* Constants */
#define IOBASE 0xbf800000
-#define F_CPU 33868800UL
-#define F_GPU 53222400UL
+#define EXP1BASE 0xbf000000
+
+#define F_CPU 33868800L
+#define F_GPU 53222400L
/* GPU */
@@ -82,24 +87,16 @@
#define MDEC0 _MMIO32(IOBASE | 0x1820)
#define MDEC1 _MMIO32(IOBASE | 0x1824)
-/* SPI controller port */
+/* SPI and serial interfaces */
-// IMPORTANT: even though JOY_TXRX is a 32-bit register, it should only be
+// IMPORTANT: even though SIO_DATA is a 32-bit register, it should only be
// accessed as 8-bit. Reading it as 16 or 32-bit works fine on real hardware,
// but leads to problems in some emulators.
-#define JOY_TXRX _MMIO8 (IOBASE | 0x1040)
-#define JOY_STAT _MMIO16(IOBASE | 0x1044)
-#define JOY_MODE _MMIO16(IOBASE | 0x1048)
-#define JOY_CTRL _MMIO16(IOBASE | 0x104a)
-#define JOY_BAUD _MMIO16(IOBASE | 0x104e)
-
-/* Serial port */
-
-#define SIO_TXRX _MMIO8 (IOBASE | 0x1050)
-#define SIO_STAT _MMIO16(IOBASE | 0x1054)
-#define SIO_MODE _MMIO16(IOBASE | 0x1058)
-#define SIO_CTRL _MMIO16(IOBASE | 0x105a)
-#define SIO_BAUD _MMIO16(IOBASE | 0x105e)
+#define SIO_DATA(N) _MMIO8 (IOBASE | 0x1040 + 16 * (N))
+#define SIO_STAT(N) _MMIO16(IOBASE | 0x1044 + 16 * (N))
+#define SIO_MODE(N) _MMIO16(IOBASE | 0x1048 + 16 * (N))
+#define SIO_CTRL(N) _MMIO16(IOBASE | 0x104a + 16 * (N))
+#define SIO_BAUD(N) _MMIO16(IOBASE | 0x104e + 16 * (N))
/* IRQ controller */
@@ -121,17 +118,17 @@
#define TIMER_CTRL(N) _MMIO32(IOBASE | 0x1104 + 16 * (N))
#define TIMER_RELOAD(N) _MMIO32(IOBASE | 0x1108 + 16 * (N))
-/* Memory control */
-
-#define EXP1_ADDR _MMIO32(IOBASE | 0x1000)
-#define EXP2_ADDR _MMIO32(IOBASE | 0x1004)
-#define EXP1_DELAY_SIZE _MMIO32(IOBASE | 0x1008)
-#define EXP3_DELAY_SIZE _MMIO32(IOBASE | 0x100c)
-#define BIOS_DELAY_SIZE _MMIO32(IOBASE | 0x1010)
-#define SPU_DELAY_SIZE _MMIO32(IOBASE | 0x1014)
-#define CD_DELAY_SIZE _MMIO32(IOBASE | 0x1018)
-#define EXP2_DELAY_SIZE _MMIO32(IOBASE | 0x101c)
-#define COM_DELAY_CFG _MMIO32(IOBASE | 0x1020)
-#define RAM_SIZE_CFG _MMIO32(IOBASE | 0x1060)
+/* Memory/bus control */
+
+#define BUS_EXP1_ADDR _MMIO32(IOBASE | 0x1000)
+#define BUS_EXP2_ADDR _MMIO32(IOBASE | 0x1004)
+#define BUS_EXP1_CFG _MMIO32(IOBASE | 0x1008)
+#define BUS_EXP3_CFG _MMIO32(IOBASE | 0x100c)
+#define BUS_BIOS_CFG _MMIO32(IOBASE | 0x1010)
+#define BUS_SPU_CFG _MMIO32(IOBASE | 0x1014)
+#define BUS_CD_CFG _MMIO32(IOBASE | 0x1018)
+#define BUS_EXP2_CFG _MMIO32(IOBASE | 0x101c)
+#define BUS_COM_DELAY _MMIO32(IOBASE | 0x1020)
+#define BUS_RAM_SIZE _MMIO32(IOBASE | 0x1060)
#endif