notaz.gp2x.de
/
picodrive.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
32x: sh2 stat code, disabled by default
[picodrive.git]
/
pico
/
32x
/
memory.c
diff --git
a/pico/32x/memory.c
b/pico/32x/memory.c
index
57a2873
..
ea4051b
100644
(file)
--- a/
pico/32x/memory.c
+++ b/
pico/32x/memory.c
@@
-735,7
+735,7
@@
static void PicoWrite8_32x_on(u32 a, u32 d)
static void PicoWrite16_32x_on(u32 a, u32 d)
{
if ((a & 0xfc00) == 0x5000)
static void PicoWrite16_32x_on(u32 a, u32 d)
{
if ((a & 0xfc00) == 0x5000)
- elprintf(EL_
UIO
, "m68k 32x w16 [%06x] %04x @%06x", a, d & 0xffff, SekPc);
+ elprintf(EL_
32X
, "m68k 32x w16 [%06x] %04x @%06x", a, d & 0xffff, SekPc);
if ((a & 0xffc0) == 0x5100) { // a15100
p32x_reg_write16(a, d);
if ((a & 0xffc0) == 0x5100) { // a15100
p32x_reg_write16(a, d);
@@
-1016,6
+1016,10
@@
static u32 sh2_read16_da(u32 a, int id)
return ((u16 *)Pico32xMem->data_array[id])[(a & 0xfff) / 2];
}
return ((u16 *)Pico32xMem->data_array[id])[(a & 0xfff) / 2];
}
+static void sh2_write_ignore(u32 a, u32 d, int id)
+{
+}
+
// write8
static void sh2_write8_unmapped(u32 a, u32 d, int id)
{
// write8
static void sh2_write8_unmapped(u32 a, u32 d, int id)
{
@@
-1167,7
+1171,7
@@
typedef void (sh2_write_handler)(u32 a, u32 d, int id);
#define SH2MAP_ADDR2OFFS(a) \
(((a >> 25) & 3) | ((a >> 27) & 0x1c))
#define SH2MAP_ADDR2OFFS(a) \
(((a >> 25) & 3) | ((a >> 27) & 0x1c))
-u32 p32x_sh2_read8(u32 a, SH2 *sh2)
+u32
REGPARM(2)
p32x_sh2_read8(u32 a, SH2 *sh2)
{
const sh2_memmap *sh2_map = sh2->read8_map;
uptr p;
{
const sh2_memmap *sh2_map = sh2->read8_map;
uptr p;
@@
-1180,7
+1184,7
@@
u32 p32x_sh2_read8(u32 a, SH2 *sh2)
return *(u8 *)((p << 1) + ((a & sh2_map->mask) ^ 1));
}
return *(u8 *)((p << 1) + ((a & sh2_map->mask) ^ 1));
}
-u32 p32x_sh2_read16(u32 a, SH2 *sh2)
+u32
REGPARM(2)
p32x_sh2_read16(u32 a, SH2 *sh2)
{
const sh2_memmap *sh2_map = sh2->read16_map;
uptr p;
{
const sh2_memmap *sh2_map = sh2->read16_map;
uptr p;
@@
-1193,7
+1197,7
@@
u32 p32x_sh2_read16(u32 a, SH2 *sh2)
return *(u16 *)((p << 1) + ((a & sh2_map->mask) & ~1));
}
return *(u16 *)((p << 1) + ((a & sh2_map->mask) & ~1));
}
-u32 p32x_sh2_read32(u32 a, SH2 *sh2)
+u32
REGPARM(2)
p32x_sh2_read32(u32 a, SH2 *sh2)
{
const sh2_memmap *sh2_map = sh2->read16_map;
sh2_read_handler *handler;
{
const sh2_memmap *sh2_map = sh2->read16_map;
sh2_read_handler *handler;
@@
-1216,7
+1220,7
@@
u32 p32x_sh2_read32(u32 a, SH2 *sh2)
return (handler(a, sh2->is_slave) << 16) | handler(a + 2, sh2->is_slave);
}
return (handler(a, sh2->is_slave) << 16) | handler(a + 2, sh2->is_slave);
}
-void p32x_sh2_write8(u32 a, u32 d, SH2 *sh2)
+void
REGPARM(3)
p32x_sh2_write8(u32 a, u32 d, SH2 *sh2)
{
const void **sh2_wmap = sh2->write8_tab;
sh2_write_handler *wh;
{
const void **sh2_wmap = sh2->write8_tab;
sh2_write_handler *wh;
@@
-1225,7
+1229,7
@@
void p32x_sh2_write8(u32 a, u32 d, SH2 *sh2)
wh(a, d, sh2->is_slave);
}
wh(a, d, sh2->is_slave);
}
-void p32x_sh2_write16(u32 a, u32 d, SH2 *sh2)
+void
REGPARM(3)
p32x_sh2_write16(u32 a, u32 d, SH2 *sh2)
{
const void **sh2_wmap = sh2->write16_tab;
sh2_write_handler *wh;
{
const void **sh2_wmap = sh2->write16_tab;
sh2_write_handler *wh;
@@
-1234,7
+1238,7
@@
void p32x_sh2_write16(u32 a, u32 d, SH2 *sh2)
wh(a, d, sh2->is_slave);
}
wh(a, d, sh2->is_slave);
}
-void p32x_sh2_write32(u32 a, u32 d, SH2 *sh2)
+void
REGPARM(3)
p32x_sh2_write32(u32 a, u32 d, SH2 *sh2)
{
const void **sh2_wmap = sh2->write16_tab;
sh2_write_handler *handler;
{
const void **sh2_wmap = sh2->write16_tab;
sh2_write_handler *handler;
@@
-1451,6
+1455,12
@@
void PicoMemSetup32x(void)
sh2_write16_map[i] = sh2_write16_unmapped;
}
sh2_write16_map[i] = sh2_write16_unmapped;
}
+ // "purge area"
+ for (i = 0x08; i <= 0x0b; i++) {
+ sh2_write8_map[i] =
+ sh2_write16_map[i] = sh2_write_ignore;
+ }
+
// CS0
sh2_read8_map[0].addr = sh2_read8_map[4].addr = MAP_HANDLER(sh2_read8_cs0);
sh2_read16_map[0].addr = sh2_read16_map[4].addr = MAP_HANDLER(sh2_read16_cs0);
// CS0
sh2_read8_map[0].addr = sh2_read8_map[4].addr = MAP_HANDLER(sh2_read8_cs0);
sh2_read16_map[0].addr = sh2_read16_map[4].addr = MAP_HANDLER(sh2_read16_cs0);