[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [PATCH v3 2/6] target-arm: do not set do_interrupt hand
From: |
Peter Maydell |
Subject: |
Re: [Qemu-devel] [PATCH v3 2/6] target-arm: do not set do_interrupt handler for AArch64 user mode |
Date: |
Tue, 9 Sep 2014 16:25:31 +0100 |
On 5 September 2014 13:24, Ard Biesheuvel <address@hidden> wrote:
> From: Rob Herring <address@hidden>
>
> User mode emulation should never get interrupts and thus should not
> use the system emulation exception handler function. Remove the reference,
> and '#ifndef USER_MODE_ONLY' the function itself as well, so that we can add
> system mode only functionality to it.
>
> Signed-off-by: Rob Herring <address@hidden>
> Signed-off-by: Ard Biesheuvel <address@hidden>
> ---
> target-arm/cpu64.c | 2 ++
> target-arm/helper-a64.c | 3 +++
> 2 files changed, 5 insertions(+)
>
> diff --git a/target-arm/cpu64.c b/target-arm/cpu64.c
> index aa42803959be..9f88b9f4eea0 100644
> --- a/target-arm/cpu64.c
> +++ b/target-arm/cpu64.c
> @@ -196,7 +196,9 @@ static void aarch64_cpu_class_init(ObjectClass *oc, void
> *data)
> {
> CPUClass *cc = CPU_CLASS(oc);
>
> +#if !defined(CONFIG_USER_ONLY)
> cc->do_interrupt = aarch64_cpu_do_interrupt;
> +#endif
> cc->set_pc = aarch64_cpu_set_pc;
> cc->gdb_read_register = aarch64_cpu_gdb_read_register;
> cc->gdb_write_register = aarch64_cpu_gdb_write_register;
> diff --git a/target-arm/helper-a64.c b/target-arm/helper-a64.c
> index 2e9ef64786ae..89b913ee9396 100644
> --- a/target-arm/helper-a64.c
> +++ b/target-arm/helper-a64.c
> @@ -438,6 +438,8 @@ uint64_t HELPER(crc32c_64)(uint64_t acc, uint64_t val,
> uint32_t bytes)
> return crc32c(acc, buf, bytes) ^ 0xffffffff;
> }
>
> +#if !defined(CONFIG_USER_ONLY)
> +
> /* Handle a CPU exception. */
> void aarch64_cpu_do_interrupt(CPUState *cs)
> {
> @@ -512,3 +514,4 @@ void aarch64_cpu_do_interrupt(CPUState *cs)
> env->pc = addr;
> cs->interrupt_request |= CPU_INTERRUPT_EXITTB;
> }
> +#endif
For consistency we need to not set do_interrupt in
the arm_cpu_class_init() function too. (Then we'll
have it be NULL in all cases, since v7m already
guards its assignment with an ifdef.)
thanks
-- PMM