On 17/03/26, Helge Deller wrote:
> From: Helge Deller <[email protected]>
>
> HP-UX 11 64-bit reads at bootup a word from address CPU_HPA + 0x500
> while flushing the the cache of a T600.
> Add a memory handler to avoid crashing while reading this word.
>
> Signed-off-by: Helge Deller <[email protected]>
> ---
> hw/hppa/machine.c | 16 ++++++++++++++++
> 1 file changed, 16 insertions(+)
>
> diff --git a/hw/hppa/machine.c b/hw/hppa/machine.c
> index e72dda2a68..7e8ebbca3b 100644
> --- a/hw/hppa/machine.c
> +++ b/hw/hppa/machine.c
Changeset looks good apart from breaking coding convention
> @@ -313,6 +313,22 @@ static TranslateFn
> *machine_HP_common_init_cpus(MachineState *machine)
> memory_region_add_subregion(addr_space,
> translate(NULL, CPU_HPA + i * 0x1000),
> cpu_region);
> +
> + if (!hppa_is_pa20(&cpu[0]->env))
> + continue;
braces around if statement
> +
> + /* HP-UX 11 64-bit reads a word from address CPU_HPA + 0x500
> + * while flushing the the cache of a T600, which was the first
> + * server with a 64-bit PA-RISC 2.0 CPU.
> + * We return 0, since the value isn't used anyway. */
/*
* HP-UX 11 64-bit reads a word from address CPU_HPA + 0x500
* while flushing the the cache of a T600, which was the first
* server with a 64-bit PA-RISC 2.0 CPU.
* We return 0, since the value isn't used anyway.
*/
> + g_autofree char *cflush_name;
declare at top of for() scope, or top of function
> + cflush_name = g_strdup_printf("cpu%u-T600-cacheflush", i);
> + MemoryRegion *cflush = g_new(MemoryRegion, 1);
likewise
> + memory_region_init_io(cflush, NULL, &hppa_pci_ignore_ops,
> + NULL, cflush_name, 4);
> + memory_region_add_subregion(addr_space,
> + translate(NULL, CPU_HPA + i * 0x1000 + 0x500),
> + cflush);
> }
>
> /* RTC and DebugOutputPort on CPU #0 */
> --
> 2.53.0
>
Other than that
Reviewed-by: Anton Johansson <[email protected]>