arch-arm: Implementation of SelfHosted Debug Software step
authorJordi Vaquero <jordi.vaquero@metempsy.com>
Tue, 29 Oct 2019 15:28:30 +0000 (16:28 +0100)
committerJordi Vaquero <jordi.vaquero@metempsy.com>
Thu, 2 Jul 2020 11:53:15 +0000 (11:53 +0000)
commit9c812d5aa9d1748da42c1e90df3895bfd90e474b
tree955bb80ecc6536bd6de352c86cc040f0b18df4d5
parent675e01216d469cb2b3db95720560b0239abb2dad
arch-arm: Implementation of SelfHosted Debug Software step

This commit implements SelfHosted Debug Software step as is defined in
Armv8 Reference manual chapter D2.

+ decoder.hh/cc/isa: Checks the software step bit in order to skip the instruction
              before its decode.
+ faults.hh/cc: implemented SoftwareStep exception and proper modification
                of spsr during the invoke of other exceptions
+ isa.cc: Set debug mask if needed during cpsr modification
+ tlb.cc: Checks if software step is in ACTIVE state to avoid trigger
          breakpoint or watchpoint exception
+ self_debug.hh/cc: Implementation of State change and ss bit based during eret.
+ types.hh: Define sofware step flags like step, load or stepped to check the different flags
        that triggering software step should use for the ISS code.
+ pseudo.hh/isa: Triggers the sofware step esception after decode.
+ static_inst.cc: Call debugExceptionReturnsSS durint eret routine.

Change-Id: I3a64507c64842c34c76ad7f6daa5f4306bd55d2c
Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/30617
Reviewed-by: Giacomo Travaglini <giacomo.travaglini@arm.com>
Maintainer: Giacomo Travaglini <giacomo.travaglini@arm.com>
Tested-by: kokoro <noreply+kokoro@google.com>
16 files changed:
src/arch/arm/decoder.cc
src/arch/arm/faults.cc
src/arch/arm/faults.hh
src/arch/arm/insts/pseudo.cc
src/arch/arm/insts/pseudo.hh
src/arch/arm/insts/static_inst.cc
src/arch/arm/isa.cc
src/arch/arm/isa/bitfields.isa
src/arch/arm/isa/decoder/decoder.isa
src/arch/arm/isa/formats/pseudo.isa
src/arch/arm/isa/insts/ldr.isa
src/arch/arm/isa/insts/ldr64.isa
src/arch/arm/self_debug.cc
src/arch/arm/self_debug.hh
src/arch/arm/tlb.cc
src/arch/arm/types.hh