mirror of
https://github.com/xemu-project/xemu.git
synced 2024-11-23 19:49:43 +00:00
hw/arm/armsse.c: Correct modelling of SSE-300 internal SRAMs
The SSE-300 was not correctly modelling its internal SRAMs: * the SRAM address width default is 18 * the SRAM is mapped at 0x2100_0000, not 0x2000_0000 like the SSE-200 and IoTKit The default address width is no longer guest-visible since our only SSE-300 board sets it explicitly to a non-default value, but following the hardware's default will help for any future boards we need to model. Reported-by: Devaraj Ranganna <devaraj.ranganna@linaro.org> Signed-off-by: Peter Maydell <peter.maydell@linaro.org> Reviewed-by: Richard Henderson <richard.henderson@linaro.org> Message-id: 20210510190844.17799-4-peter.maydell@linaro.org
This commit is contained in:
parent
902b28ae4e
commit
4eb1770988
@ -59,6 +59,7 @@ struct ARMSSEInfo {
|
||||
const char *cpu_type;
|
||||
uint32_t sse_version;
|
||||
int sram_banks;
|
||||
uint32_t sram_bank_base;
|
||||
int num_cpus;
|
||||
uint32_t sys_version;
|
||||
uint32_t iidr;
|
||||
@ -102,7 +103,7 @@ static Property sse300_properties[] = {
|
||||
DEFINE_PROP_LINK("memory", ARMSSE, board_memory, TYPE_MEMORY_REGION,
|
||||
MemoryRegion *),
|
||||
DEFINE_PROP_UINT32("EXP_NUMIRQ", ARMSSE, exp_numirq, 64),
|
||||
DEFINE_PROP_UINT32("SRAM_ADDR_WIDTH", ARMSSE, sram_addr_width, 15),
|
||||
DEFINE_PROP_UINT32("SRAM_ADDR_WIDTH", ARMSSE, sram_addr_width, 18),
|
||||
DEFINE_PROP_UINT32("init-svtor", ARMSSE, init_svtor, 0x10000000),
|
||||
DEFINE_PROP_BOOL("CPU0_FPU", ARMSSE, cpu_fpu[0], true),
|
||||
DEFINE_PROP_BOOL("CPU0_DSP", ARMSSE, cpu_dsp[0], true),
|
||||
@ -504,6 +505,7 @@ static const ARMSSEInfo armsse_variants[] = {
|
||||
.sse_version = ARMSSE_IOTKIT,
|
||||
.cpu_type = ARM_CPU_TYPE_NAME("cortex-m33"),
|
||||
.sram_banks = 1,
|
||||
.sram_bank_base = 0x20000000,
|
||||
.num_cpus = 1,
|
||||
.sys_version = 0x41743,
|
||||
.iidr = 0,
|
||||
@ -523,6 +525,7 @@ static const ARMSSEInfo armsse_variants[] = {
|
||||
.sse_version = ARMSSE_SSE200,
|
||||
.cpu_type = ARM_CPU_TYPE_NAME("cortex-m33"),
|
||||
.sram_banks = 4,
|
||||
.sram_bank_base = 0x20000000,
|
||||
.num_cpus = 2,
|
||||
.sys_version = 0x22041743,
|
||||
.iidr = 0,
|
||||
@ -542,6 +545,7 @@ static const ARMSSEInfo armsse_variants[] = {
|
||||
.sse_version = ARMSSE_SSE300,
|
||||
.cpu_type = ARM_CPU_TYPE_NAME("cortex-m55"),
|
||||
.sram_banks = 2,
|
||||
.sram_bank_base = 0x21000000,
|
||||
.num_cpus = 1,
|
||||
.sys_version = 0x7e00043b,
|
||||
.iidr = 0x74a0043b,
|
||||
@ -1161,7 +1165,7 @@ static void armsse_realize(DeviceState *dev, Error **errp)
|
||||
/* Map the upstream end of the MPC into the right place... */
|
||||
sbd_mpc = SYS_BUS_DEVICE(&s->mpc[i]);
|
||||
memory_region_add_subregion(&s->container,
|
||||
0x20000000 + i * sram_bank_size,
|
||||
info->sram_bank_base + i * sram_bank_size,
|
||||
sysbus_mmio_get_region(sbd_mpc, 1));
|
||||
/* ...and its register interface */
|
||||
memory_region_add_subregion(&s->container, 0x50083000 + i * 0x1000,
|
||||
|
Loading…
Reference in New Issue
Block a user