arm: Add a gem5 specific pseudo op semihosting call.
authorGabe Black <gabeblack@google.com>
Wed, 26 Feb 2020 23:49:39 +0000 (15:49 -0800)
committerGabe Black <gabeblack@google.com>
Fri, 27 Mar 2020 21:33:03 +0000 (21:33 +0000)
commit19bba883547c139d5ccd2d1abeaf65ceea18e2a7
tree8f525cada2f6015daf79dc426220689f1bb118ae
parentf4697687ed722768b527d20ed1efd2297a7df273
arm: Add a gem5 specific pseudo op semihosting call.

This is in the range of call numbers set aside for extensions. When
called, it will extract the function to use from the first argument
slot. Then it calls the pseudoInst dispatching function using an ABI
which drops the return value (which is handled by semihosting itself)
and which extracts arguments from the remaining slots in the param
structure.

This makes gem5 pseudo ops available on CPU models which support
semihosting but not instruction based or address based "magic"
operations, aka hypercalls. This includes the fast model CPUs.

Change-Id: Ic4817f2b1e6aad7784af77a1a494cf614d4d4c6c
Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/25950
Reviewed-by: Giacomo Travaglini <giacomo.travaglini@arm.com>
Maintainer: Giacomo Travaglini <giacomo.travaglini@arm.com>
Tested-by: kokoro <noreply+kokoro@google.com>
src/arch/arm/semihosting.cc
src/arch/arm/semihosting.hh