qemu-ppc
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Qemu-ppc] [PATCH] target-ppc: disable unsupported modes for SPR_CTR


From: Alexey Kardashevskiy
Subject: Re: [Qemu-ppc] [PATCH] target-ppc: disable unsupported modes for SPR_CTRL/SPR_UCTRL
Date: Fri, 10 Jan 2014 19:41:24 +1100
User-agent: Mozilla/5.0 (X11; Linux i686 on x86_64; rv:24.0) Gecko/20100101 Thunderbird/24.2.0

On 12/23/2013 01:42 PM, Alexey Kardashevskiy wrote:
> The Figure 17 "SPR encodings" of the PowerISA 2.07 describes CTRL SPR as:
> 
>                        priviledged
> #   spr5-9 spr0-4 name mtspr mfspr len cat
> 136 00100  01000  CTRL   -    no    32  S
> 152 00100  11000  CTRL  yes    -    32  S
> 
> According to this chart, the hypervisor's CTRL (#152) does not support
> reading, the user-space's CTRL (UCTRL, #136) does not support writing.
> 
> This replaces unsupported operations with the default SPR_NOACCESS hook.
> 
> Signed-off-by: Alexey Kardashevskiy <address@hidden>
> ---
> 
> While we are on this topic, I thought it makes sense to fix this too.
> This does not seem to affect anything in the current QEMU but it is more
> correct/clean.


Alex, ping.

Is it complicated or controversial patch? :)


> 
> 
> ---
>  target-ppc/translate_init.c | 12 ++++++------
>  1 file changed, 6 insertions(+), 6 deletions(-)
> 
> diff --git a/target-ppc/translate_init.c b/target-ppc/translate_init.c
> index 93ad762..860e241 100644
> --- a/target-ppc/translate_init.c
> +++ b/target-ppc/translate_init.c
> @@ -6737,11 +6737,11 @@ static void init_proc_970FX (CPUPPCState *env)
>                   0x00000000);
>      spr_register(env, SPR_CTRL, "SPR_CTRL",
>                   SPR_NOACCESS, SPR_NOACCESS,
> -                 &spr_read_generic, &spr_write_generic,
> +                 SPR_NOACCESS, &spr_write_generic,
>                   0x00000000);
>      spr_register(env, SPR_UCTRL, "SPR_UCTRL",
>                   SPR_NOACCESS, SPR_NOACCESS,
> -                 &spr_read_generic, &spr_write_generic,
> +                 &spr_read_generic, SPR_NOACCESS,
>                   0x00000000);
>      spr_register(env, SPR_VRSAVE, "SPR_VRSAVE",
>                   &spr_read_generic, &spr_write_generic,
> @@ -6902,11 +6902,11 @@ static void init_proc_power5plus(CPUPPCState *env)
>                   0x00000000);
>      spr_register(env, SPR_CTRL, "SPR_CTRL",
>                   SPR_NOACCESS, SPR_NOACCESS,
> -                 &spr_read_generic, &spr_write_generic,
> +                 SPR_NOACCESS, &spr_write_generic,
>                   0x00000000);
>      spr_register(env, SPR_UCTRL, "SPR_UCTRL",
>                   SPR_NOACCESS, SPR_NOACCESS,
> -                 &spr_read_generic, &spr_write_generic,
> +                 &spr_read_generic, SPR_NOACCESS,
>                   0x00000000);
>      spr_register(env, SPR_VRSAVE, "SPR_VRSAVE",
>                   &spr_read_generic, &spr_write_generic,
> @@ -7002,11 +7002,11 @@ static void init_proc_POWER7 (CPUPPCState *env)
>      /* XXX : not implemented */
>      spr_register(env, SPR_CTRL, "SPR_CTRLT",
>                   SPR_NOACCESS, SPR_NOACCESS,
> -                 &spr_read_generic, &spr_write_generic,
> +                 SPR_NOACCESS, &spr_write_generic,
>                   0x80800000);
>      spr_register(env, SPR_UCTRL, "SPR_CTRLF",
>                   SPR_NOACCESS, SPR_NOACCESS,
> -                 &spr_read_generic, &spr_write_generic,
> +                 &spr_read_generic, SPR_NOACCESS,
>                   0x80800000);
>      spr_register(env, SPR_VRSAVE, "SPR_VRSAVE",
>                   &spr_read_generic, &spr_write_generic,
> 


-- 
Alexey



reply via email to

[Prev in Thread] Current Thread [Next in Thread]