arm: Don't panic when checking coprocessor read/write permissions
authorNikos Nikoleris <nikos.nikoleris@arm.com>
Wed, 1 Mar 2017 20:55:15 +0000 (20:55 +0000)
committerAndreas Sandberg <andreas.sandberg@arm.com>
Mon, 3 Apr 2017 16:39:47 +0000 (16:39 +0000)
commit3384caf0fe7fb4c33b5393840f1f447965b7d9ac
tree6843cc28e86f4495a9dfb6e1dd45a7d6453d9f49
parent4b164f8382e78e26dc796559ee58ee31abca5d4c
arm: Don't panic when checking coprocessor read/write permissions

Instructions that use the coprocessor interface check the current
program status to determine whether the current context has the
priviledges to read from/write to the coprocessor. Some modes allow
the execution of coprocessor instructions, some others do not allow it,
while some other modes are unexpected (e.g., executing an AArch32
instruction while being in an AArch64 mode).

Previously we would unconditionally trigger a panic if we were in an
unexpected mode. This change removes the panic and replaces it
with an Undefined Instruction fault that triggers if and when a
coprocessor instruction commits in an unexpected mode. This allows
speculative coprocessor instructions from unexpected modes to execute
but prevents them from gettting committed.

Change-Id: If2776d5bae2471cdbaf76d0e1ae655f501bfbf01
Reviewed-by: Andreas Sandberg <andreas.sandberg@arm.com>
Reviewed-by: Rekai Gonzalez Alberquilla <rekai.gonzalezalberquilla@arm.com>
Reviewed-on: https://gem5-review.googlesource.com/2281
Maintainer: Andreas Sandberg <andreas.sandberg@arm.com>
Reviewed-by: Weiping Liao <weipingliao@google.com>
src/arch/arm/isa/insts/misc.isa
src/arch/arm/miscregs.cc
src/arch/arm/miscregs.hh