gem5/src/arch/arm
Andreas Sandberg 184fefbb3b arm: Raise an alignment fault if a PC has illegal alignment
We currently don't handle unaligned PCs correctly. There is one check
for unaligned PCs in the TLB when running in aarch64 mode, but this
check does not cover cases where the CPU does not do a TLB lookup when
decoding an instruction (e.g., a branch stays within the same cache
line). Additionally, the Decoder class sometimes throws an assertion
for unaligned PCs which breaks speculation.

This changeset introduces a decoder fault bit field in the ExtMachInst
structure. This field can be used to signal a decoder failure. If set,
the decoder generates an internal gem5fault instruction instead of a
normal instruction. This instruction in turns either panics (fault
type PANIC), returns an PCAlignmentFault (fault type UNALIGNED,
aarch64) or PrefetchAbort (fault type UNALIGNED, aarch32).

The patch causes minor changes to the realview64 regressions, and a
stats bump will follow.
2014-12-23 09:31:17 -05:00
..
insts arm: Raise an alignment fault if a PC has illegal alignment 2014-12-23 09:31:17 -05:00
isa arm: Raise an alignment fault if a PC has illegal alignment 2014-12-23 09:31:17 -05:00
linux arm: Fixes based on UBSan and static analysis 2014-11-14 03:53:51 -05:00
ArmInterrupts.py sim: Include object header files in SWIG interfaces 2012-11-02 11:32:01 -05:00
ArmISA.py arm: Add a model of an ARM PMUv3 2014-10-16 05:49:39 -04:00
ArmNativeTrace.py sim: Include object header files in SWIG interfaces 2012-11-02 11:32:01 -05:00
ArmPMU.py arm: Add helper methods to setup architected PMU events 2014-10-16 05:49:42 -04:00
ArmSystem.py arm, tests: Update config files to more recent kernels and create 64-bit regressions. 2014-10-29 23:18:27 -05:00
ArmTLB.py arm: Add support for ARMv8 (AArch64 & AArch32) 2014-01-24 15:29:34 -06:00
ccregs.hh arm: use condition code registers for ARM ISA 2014-04-29 16:05:02 -05:00
decoder.cc arm: Raise an alignment fault if a PC has illegal alignment 2014-12-23 09:31:17 -05:00
decoder.hh arm: Clean up and document decoder API 2014-12-23 09:31:17 -05:00
faults.cc arch: Use const StaticInstPtr references where possible 2014-09-27 09:08:36 -04:00
faults.hh arm: Fixes based on UBSan and static analysis 2014-11-14 03:53:51 -05:00
interrupts.cc arm: Add support for ARMv8 (AArch64 & AArch32) 2014-01-24 15:29:34 -06:00
interrupts.hh arch: Use shared_ptr for all Faults 2014-10-16 05:49:51 -04:00
intregs.hh arm: ISA X31 destination register fix 2014-09-03 07:42:43 -04:00
isa.cc arm: Add support for filtering in the PMU 2014-12-23 09:31:17 -05:00
isa.hh arm: Fix multi-system AArch64 boot w/caches. 2014-10-29 23:18:26 -05:00
isa_device.cc arm: Add support for filtering in the PMU 2014-12-23 09:31:17 -05:00
isa_device.hh arm: Add support for filtering in the PMU 2014-12-23 09:31:17 -05:00
isa_traits.hh arch: Cleanup unused ISA traits constants 2014-09-03 07:42:21 -04:00
kernel_stats.hh Make commenting on close namespace brackets consistent. 2011-01-03 14:35:43 -08:00
locked_mem.hh arm: Add support for ARMv8 (AArch64 & AArch32) 2014-01-24 15:29:34 -06:00
microcode_rom.hh arm: include missing file for arm 2009-04-21 15:40:26 -07:00
miscregs.cc arm: Fix decoding of PMXEVTYPER_EL0 and PMCCFILTR_EL0 2014-12-08 04:49:53 -05:00
miscregs.hh arm: Mark some miscregs (timer counter) registers at unverifiable. 2014-10-29 23:18:24 -05:00
mmapped_ipr.hh arch: Add support for m5ops using mmapped IPRs 2013-09-30 12:20:43 +02:00
nativetrace.cc arm: use condition code registers for ARM ISA 2014-04-29 16:05:02 -05:00
nativetrace.hh ARM: Add vfpv3 support to native trace. 2011-05-04 20:38:26 -05:00
pagetable.hh mem: Page Table map api modification 2014-11-23 18:01:09 -08:00
pmu.cc arm: Add support for filtering in the PMU 2014-12-23 09:31:17 -05:00
pmu.hh arm: Add support for filtering in the PMU 2014-12-23 09:31:17 -05:00
process.cc arch: Cleanup unused ISA traits constants 2014-09-03 07:42:21 -04:00
process.hh arm: Fixes based on UBSan and static analysis 2014-11-14 03:53:51 -05:00
pseudo_inst.hh kvm, x86: Adding support for SE mode execution 2014-11-23 18:01:08 -08:00
registers.hh arm: use condition code registers for ARM ISA 2014-04-29 16:05:02 -05:00
remote_gdb.cc misc: Generalize GDB single stepping. 2014-12-05 22:37:03 -08:00
remote_gdb.hh misc: Generalize GDB single stepping. 2014-12-05 22:37:03 -08:00
SConscript arm: Raise an alignment fault if a PC has illegal alignment 2014-12-23 09:31:17 -05:00
SConsopts arm: add ARM support to M5 2009-04-05 18:53:15 -07:00
stacktrace.cc arch: Use const StaticInstPtr references where possible 2014-09-27 09:08:36 -04:00
stacktrace.hh arch: Use const StaticInstPtr references where possible 2014-09-27 09:08:36 -04:00
stage2_lookup.cc arch: Pass faults by const reference where possible 2014-09-19 10:35:18 -04:00
stage2_lookup.hh arm: Fixes based on UBSan and static analysis 2014-11-14 03:53:51 -05:00
stage2_mmu.cc arm: Fixes based on UBSan and static analysis 2014-11-14 03:53:51 -05:00
stage2_mmu.hh arch: Pass faults by const reference where possible 2014-09-19 10:35:18 -04:00
system.cc arm: Fixes based on UBSan and static analysis 2014-11-14 03:53:51 -05:00
system.hh arm: Add support for ARMv8 (AArch64 & AArch32) 2014-01-24 15:29:34 -06:00
table_walker.cc arm: Fix TLB ignoring faults when table walking 2014-12-02 06:08:11 -05:00
table_walker.hh arm: Fixes based on UBSan and static analysis 2014-11-14 03:53:51 -05:00
tlb.cc arm: Raise an alignment fault if a PC has illegal alignment 2014-12-23 09:31:17 -05:00
tlb.hh arch: Use shared_ptr for all Faults 2014-10-16 05:49:51 -04:00
types.hh arm: Raise an alignment fault if a PC has illegal alignment 2014-12-23 09:31:17 -05:00
utility.cc arch: Use shared_ptr for all Faults 2014-10-16 05:49:51 -04:00
utility.hh arch: Use const StaticInstPtr references where possible 2014-09-27 09:08:36 -04:00
vtophys.cc arm: Add support for ARMv8 (AArch64 & AArch32) 2014-01-24 15:29:34 -06:00
vtophys.hh gcc: Clean-up of non-C++0x compliant code, first steps 2012-03-19 06:36:09 -04:00