diff options
author | Peter Maydell <peter.maydell@linaro.org> | 2014-04-15 19:18:38 +0100 |
---|---|---|
committer | Peter Maydell <peter.maydell@linaro.org> | 2014-04-17 21:34:03 +0100 |
commit | d4a2dc675bde36443c3a73051ca863d878d8bc31 (patch) | |
tree | 2b46df0c72d662b29bd63e393dbeab125f716533 /target-arm/internals.h | |
parent | 8bcbf37caa87ba89bc391bad70039f942a98c7e3 (diff) | |
download | hqemu-d4a2dc675bde36443c3a73051ca863d878d8bc31.zip hqemu-d4a2dc675bde36443c3a73051ca863d878d8bc31.tar.gz |
target-arm: Add support for generating exceptions with syndrome information
Add new helpers exception_with_syndrome (for generating an exception
with syndrome information) and exception_uncategorized (for generating
an exception with "Unknown or Uncategorized Reason", which have a syndrome
register value of zero), and use them to generate the correct syndrome
information for exceptions which are raised directly from generated code.
This patch includes moving the A32/T32 gen_exception_insn functions
further up in the source file; they will be needed for "VFP/Neon disabled"
exception generation later.
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
Reviewed-by: Peter Crosthwaite <peter.crosthwaite@xilinx.com>
Diffstat (limited to 'target-arm/internals.h')
-rw-r--r-- | target-arm/internals.h | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/target-arm/internals.h b/target-arm/internals.h index cc3fbf9..0300ba3 100644 --- a/target-arm/internals.h +++ b/target-arm/internals.h @@ -25,6 +25,20 @@ #ifndef TARGET_ARM_INTERNALS_H #define TARGET_ARM_INTERNALS_H +static inline bool excp_is_internal(int excp) +{ + /* Return true if this exception number represents a QEMU-internal + * exception that will not be passed to the guest. + */ + return excp == EXCP_INTERRUPT + || excp == EXCP_HLT + || excp == EXCP_DEBUG + || excp == EXCP_HALTED + || excp == EXCP_EXCEPTION_EXIT + || excp == EXCP_KERNEL_TRAP + || excp == EXCP_STREX; +} + /* Scale factor for generic timers, ie number of ns per tick. * This gives a 62.5MHz timer. */ |