mirror of https://github.com/xemu-project/xemu.git
ppc4xx: Pass array index to function instead of pointer into the array
The sdram_set_bcr() function in ppc440_uc.c takes a pointer into an array then calculates its index from that. It's simpler and easier to just pass the index which simplifies both the function and its callers. Do similar cleanup in ppc4xx_devs.c to similar function. Signed-off-by: BALATON Zoltan <balaton@eik.bme.hu> Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
This commit is contained in:
parent
0a57fbee20
commit
70812bf709
|
@ -564,28 +564,26 @@ static target_ulong sdram_size(uint32_t bcr)
|
||||||
return size;
|
return size;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void sdram_set_bcr(ppc440_sdram_t *sdram,
|
static void sdram_set_bcr(ppc440_sdram_t *sdram, int i,
|
||||||
uint32_t *bcrp, uint32_t bcr, int enabled)
|
uint32_t bcr, int enabled)
|
||||||
{
|
{
|
||||||
unsigned n = bcrp - sdram->bcr;
|
if (sdram->bcr[i] & 1) {
|
||||||
|
/* First unmap RAM if enabled */
|
||||||
if (*bcrp & 1) {
|
|
||||||
/* Unmap RAM */
|
|
||||||
memory_region_del_subregion(get_system_memory(),
|
memory_region_del_subregion(get_system_memory(),
|
||||||
&sdram->containers[n]);
|
&sdram->containers[i]);
|
||||||
memory_region_del_subregion(&sdram->containers[n],
|
memory_region_del_subregion(&sdram->containers[i],
|
||||||
&sdram->ram_memories[n]);
|
&sdram->ram_memories[i]);
|
||||||
object_unparent(OBJECT(&sdram->containers[n]));
|
object_unparent(OBJECT(&sdram->containers[i]));
|
||||||
}
|
}
|
||||||
*bcrp = bcr & 0xFFDEE001;
|
sdram->bcr[i] = bcr & 0xFFDEE001;
|
||||||
if (enabled && (bcr & 1)) {
|
if (enabled && (bcr & 1)) {
|
||||||
memory_region_init(&sdram->containers[n], NULL, "sdram-containers",
|
memory_region_init(&sdram->containers[i], NULL, "sdram-containers",
|
||||||
sdram_size(bcr));
|
sdram_size(bcr));
|
||||||
memory_region_add_subregion(&sdram->containers[n], 0,
|
memory_region_add_subregion(&sdram->containers[i], 0,
|
||||||
&sdram->ram_memories[n]);
|
&sdram->ram_memories[i]);
|
||||||
memory_region_add_subregion(get_system_memory(),
|
memory_region_add_subregion(get_system_memory(),
|
||||||
sdram_base(bcr),
|
sdram_base(bcr),
|
||||||
&sdram->containers[n]);
|
&sdram->containers[i]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -595,12 +593,10 @@ static void sdram_map_bcr(ppc440_sdram_t *sdram)
|
||||||
|
|
||||||
for (i = 0; i < sdram->nbanks; i++) {
|
for (i = 0; i < sdram->nbanks; i++) {
|
||||||
if (sdram->ram_sizes[i] != 0) {
|
if (sdram->ram_sizes[i] != 0) {
|
||||||
sdram_set_bcr(sdram,
|
sdram_set_bcr(sdram, i, sdram_bcr(sdram->ram_bases[i],
|
||||||
&sdram->bcr[i],
|
sdram->ram_sizes[i]), 1);
|
||||||
sdram_bcr(sdram->ram_bases[i], sdram->ram_sizes[i]),
|
|
||||||
1);
|
|
||||||
} else {
|
} else {
|
||||||
sdram_set_bcr(sdram, &sdram->bcr[i], 0, 0);
|
sdram_set_bcr(sdram, i, 0, 0);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -405,36 +405,34 @@ static target_ulong sdram_size (uint32_t bcr)
|
||||||
return size;
|
return size;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void sdram_set_bcr(ppc4xx_sdram_t *sdram,
|
static void sdram_set_bcr(ppc4xx_sdram_t *sdram, int i,
|
||||||
uint32_t *bcrp, uint32_t bcr, int enabled)
|
uint32_t bcr, int enabled)
|
||||||
{
|
{
|
||||||
unsigned n = bcrp - sdram->bcr;
|
if (sdram->bcr[i] & 0x00000001) {
|
||||||
|
|
||||||
if (*bcrp & 0x00000001) {
|
|
||||||
/* Unmap RAM */
|
/* Unmap RAM */
|
||||||
#ifdef DEBUG_SDRAM
|
#ifdef DEBUG_SDRAM
|
||||||
printf("%s: unmap RAM area " TARGET_FMT_plx " " TARGET_FMT_lx "\n",
|
printf("%s: unmap RAM area " TARGET_FMT_plx " " TARGET_FMT_lx "\n",
|
||||||
__func__, sdram_base(*bcrp), sdram_size(*bcrp));
|
__func__, sdram_base(sdram->bcr[i]), sdram_size(sdram->bcr[i]));
|
||||||
#endif
|
#endif
|
||||||
memory_region_del_subregion(get_system_memory(),
|
memory_region_del_subregion(get_system_memory(),
|
||||||
&sdram->containers[n]);
|
&sdram->containers[i]);
|
||||||
memory_region_del_subregion(&sdram->containers[n],
|
memory_region_del_subregion(&sdram->containers[i],
|
||||||
&sdram->ram_memories[n]);
|
&sdram->ram_memories[i]);
|
||||||
object_unparent(OBJECT(&sdram->containers[n]));
|
object_unparent(OBJECT(&sdram->containers[i]));
|
||||||
}
|
}
|
||||||
*bcrp = bcr & 0xFFDEE001;
|
sdram->bcr[i] = bcr & 0xFFDEE001;
|
||||||
if (enabled && (bcr & 0x00000001)) {
|
if (enabled && (bcr & 0x00000001)) {
|
||||||
#ifdef DEBUG_SDRAM
|
#ifdef DEBUG_SDRAM
|
||||||
printf("%s: Map RAM area " TARGET_FMT_plx " " TARGET_FMT_lx "\n",
|
printf("%s: Map RAM area " TARGET_FMT_plx " " TARGET_FMT_lx "\n",
|
||||||
__func__, sdram_base(bcr), sdram_size(bcr));
|
__func__, sdram_base(bcr), sdram_size(bcr));
|
||||||
#endif
|
#endif
|
||||||
memory_region_init(&sdram->containers[n], NULL, "sdram-containers",
|
memory_region_init(&sdram->containers[i], NULL, "sdram-containers",
|
||||||
sdram_size(bcr));
|
sdram_size(bcr));
|
||||||
memory_region_add_subregion(&sdram->containers[n], 0,
|
memory_region_add_subregion(&sdram->containers[i], 0,
|
||||||
&sdram->ram_memories[n]);
|
&sdram->ram_memories[i]);
|
||||||
memory_region_add_subregion(get_system_memory(),
|
memory_region_add_subregion(get_system_memory(),
|
||||||
sdram_base(bcr),
|
sdram_base(bcr),
|
||||||
&sdram->containers[n]);
|
&sdram->containers[i]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -444,12 +442,10 @@ static void sdram_map_bcr (ppc4xx_sdram_t *sdram)
|
||||||
|
|
||||||
for (i = 0; i < sdram->nbanks; i++) {
|
for (i = 0; i < sdram->nbanks; i++) {
|
||||||
if (sdram->ram_sizes[i] != 0) {
|
if (sdram->ram_sizes[i] != 0) {
|
||||||
sdram_set_bcr(sdram,
|
sdram_set_bcr(sdram, i, sdram_bcr(sdram->ram_bases[i],
|
||||||
&sdram->bcr[i],
|
sdram->ram_sizes[i]), 1);
|
||||||
sdram_bcr(sdram->ram_bases[i], sdram->ram_sizes[i]),
|
|
||||||
1);
|
|
||||||
} else {
|
} else {
|
||||||
sdram_set_bcr(sdram, &sdram->bcr[i], 0x00000000, 0);
|
sdram_set_bcr(sdram, i, 0x00000000, 0);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -589,16 +585,16 @@ static void dcr_write_sdram (void *opaque, int dcrn, uint32_t val)
|
||||||
sdram->pmit = (val & 0xF8000000) | 0x07C00000;
|
sdram->pmit = (val & 0xF8000000) | 0x07C00000;
|
||||||
break;
|
break;
|
||||||
case 0x40: /* SDRAM_B0CR */
|
case 0x40: /* SDRAM_B0CR */
|
||||||
sdram_set_bcr(sdram, &sdram->bcr[0], val, sdram->cfg & 0x80000000);
|
sdram_set_bcr(sdram, 0, val, sdram->cfg & 0x80000000);
|
||||||
break;
|
break;
|
||||||
case 0x44: /* SDRAM_B1CR */
|
case 0x44: /* SDRAM_B1CR */
|
||||||
sdram_set_bcr(sdram, &sdram->bcr[1], val, sdram->cfg & 0x80000000);
|
sdram_set_bcr(sdram, 1, val, sdram->cfg & 0x80000000);
|
||||||
break;
|
break;
|
||||||
case 0x48: /* SDRAM_B2CR */
|
case 0x48: /* SDRAM_B2CR */
|
||||||
sdram_set_bcr(sdram, &sdram->bcr[2], val, sdram->cfg & 0x80000000);
|
sdram_set_bcr(sdram, 2, val, sdram->cfg & 0x80000000);
|
||||||
break;
|
break;
|
||||||
case 0x4C: /* SDRAM_B3CR */
|
case 0x4C: /* SDRAM_B3CR */
|
||||||
sdram_set_bcr(sdram, &sdram->bcr[3], val, sdram->cfg & 0x80000000);
|
sdram_set_bcr(sdram, 3, val, sdram->cfg & 0x80000000);
|
||||||
break;
|
break;
|
||||||
case 0x80: /* SDRAM_TR */
|
case 0x80: /* SDRAM_TR */
|
||||||
sdram->tr = val & 0x018FC01F;
|
sdram->tr = val & 0x018FC01F;
|
||||||
|
|
Loading…
Reference in New Issue