The SH7751 memory controller can access 7 external banks.
The 64MB of SDRAM is on bank #3. Introduce the EXT_CS_BASE()
macro and use it for SDRAM.

Signed-off-by: Philippe Mathieu-Daudé <[email protected]>
---
 hw/sh4/r2d.c | 7 ++++---
 1 file changed, 4 insertions(+), 3 deletions(-)

diff --git a/hw/sh4/r2d.c b/hw/sh4/r2d.c
index 12232fabbdf..ecbc1ec2a98 100644
--- a/hw/sh4/r2d.c
+++ b/hw/sh4/r2d.c
@@ -45,10 +45,11 @@
 #include "hw/block/flash.h"
 #include "exec/tswap.h"
 
-#define FLASH_BASE 0x00000000
+#define EXT_CS_SIZE (64 * MiB)
+#define EXT_CS_BASE(cs_index) ((cs_index) * EXT_CS_SIZE)
+
 #define FLASH_SIZE (16 * MiB)
 
-#define SDRAM_BASE 0x0c000000 /* Physical location of SDRAM: Area 3 */
 #define SDRAM_SIZE 0x04000000
 
 #define SM501_VRAM_SIZE 0x800000
@@ -256,7 +257,7 @@ static void r2d_init(MachineState *machine)
 
     switch (machine->ram_size) {
     case 64 * MiB:
-        sdram_base = SDRAM_BASE;
+        sdram_base = EXT_CS_BASE(3); /* 64M @CS3 */
         break;
     default:
         error_report("This machine can only use 64M of memory");
-- 
2.51.0


Reply via email to