Implement mapped SRAM accesses.

This commit is contained in:
Tyler J. Stachecki 2016-02-27 19:54:35 -05:00
parent f7df75babc
commit bb41f7208e
5 changed files with 25 additions and 3 deletions

View file

@ -94,6 +94,10 @@
#define SP_REGS2_BASE_ADDRESS 0x04080000
#define SP_REGS2_ADDRESS_LEN 0x00000008
// SRAM.
#define SRAM_BASE_ADDRESS 0x08000000
#define SRAM_ADDRESS_LEN 0x0801FFFF
// Video interface registers.
#define VI_REGS_BASE_ADDRESS 0x04400000
#define VI_REGS_ADDRESS_LEN 0x00000038

View file

@ -25,7 +25,7 @@
#include "vr4300/cpu.h"
#include "vr4300/interface.h"
#define NUM_MAPPINGS 16
#define NUM_MAPPINGS 17
struct bus_controller_mapping {
memory_rd_function read;
@ -56,6 +56,7 @@ int bus_init(struct bus_controller *bus) {
{read_rdram_regs, write_rdram_regs, RDRAM_REGS_BASE_ADDRESS, RDRAM_REGS_ADDRESS_LEN},
{read_sp_regs2, write_sp_regs2, SP_REGS2_BASE_ADDRESS, SP_REGS2_ADDRESS_LEN},
{read_sp_mem, write_sp_mem, SP_MEM_BASE_ADDRESS, SP_MEM_ADDRESS_LEN},
{read_sram, write_sram, SRAM_BASE_ADDRESS, SRAM_ADDRESS_LEN},
};
void *instances[NUM_MAPPINGS] = {
@ -76,7 +77,8 @@ int bus_init(struct bus_controller *bus) {
bus->si,
bus->ri,
bus->rsp,
bus->rsp
bus->rsp,
bus->pi
};
create_memory_map(&bus->map);

View file

@ -42,7 +42,7 @@ struct memory_map_node {
};
struct memory_map {
struct memory_map_node mappings[18];
struct memory_map_node mappings[19];
struct memory_map_node *nil;
struct memory_map_node *root;

View file

@ -321,3 +321,16 @@ int write_flashram(void *opaque, uint32_t address, uint32_t word, uint32_t dqm)
return 0;
}
// Mapped read of SRAM
int read_sram(void *opaque, uint32_t address, uint32_t *word) {
fprintf(stderr, "SRAM read\n");
return 0;
}
// Mapped write of SRAM
int write_sram(void *opaque, uint32_t address, uint32_t word, uint32_t dqm) {
fprintf(stderr, "SRAM write\n");
return 0;
}

View file

@ -76,8 +76,11 @@ int read_cart_rom(void *opaque, uint32_t address, uint32_t *word);
int read_pi_regs(void *opaque, uint32_t address, uint32_t *word);
int write_cart_rom(void *opaque, uint32_t address, uint32_t word, uint32_t dqm);
int write_pi_regs(void *opaque, uint32_t address, uint32_t word, uint32_t dqm);
int read_flashram(void *opaque, uint32_t address, uint32_t *word);
int write_flashram(void *opaque, uint32_t address, uint32_t word, uint32_t dqm);
int read_sram(void *opaque, uint32_t address, uint32_t *word);
int write_sram(void *opaque, uint32_t address, uint32_t word, uint32_t dqm);
#endif