summaryrefslogtreecommitdiff
path: root/src/arch/arm/semihosting.hh
diff options
context:
space:
mode:
authorAndreas Sandberg <andreas.sandberg@arm.com>2018-02-13 18:03:32 +0000
committerAndreas Sandberg <andreas.sandberg@arm.com>2018-02-19 14:24:46 +0000
commit3b25b7cc64035b181d139b90abb692f5eda935a5 (patch)
tree3d7ab1c3bea654735e0be6569062700ad7265887 /src/arch/arm/semihosting.hh
parent7b96fc2456d71d0df2700384ab44c1ed01be2f03 (diff)
downloadgem5-3b25b7cc64035b181d139b90abb692f5eda935a5.tar.xz
arch-arm: Add support for secure state in semihosting
The semihosting component currently issues non-secure memory accesses using the standard port proxy. This doesn't work when the guest is running in secure state. Change-Id: Id34b142cfcd9d77b455c040ae7f7397c29aebbc6 Signed-off-by: Andreas Sandberg <andreas.sandberg@arm.com> Reviewed-by: Jack Travaglini <giacomo.travaglini@arm.com> Reviewed-on: https://gem5-review.googlesource.com/8365 Reviewed-by: Giacomo Travaglini <giacomo.travaglini@arm.com>
Diffstat (limited to 'src/arch/arm/semihosting.hh')
-rw-r--r--src/arch/arm/semihosting.hh4
1 files changed, 4 insertions, 0 deletions
diff --git a/src/arch/arm/semihosting.hh b/src/arch/arm/semihosting.hh
index a4aa845a3..14c5f9d2d 100644
--- a/src/arch/arm/semihosting.hh
+++ b/src/arch/arm/semihosting.hh
@@ -48,6 +48,7 @@
#include "sim/sim_object.hh"
struct ArmSemihostingParams;
+class PortProxy;
class SerialDevice;
class ThreadContext;
@@ -253,8 +254,11 @@ class ArmSemihosting : public SimObject
return tick >> tickShift;
}
void semiExit(uint64_t code, uint64_t subcode);
+ PortProxy &physProxy(ThreadContext *tc);
std::string readString(ThreadContext *tc, Addr ptr, size_t len);
+ std::unique_ptr<PortProxy> physProxyS;
+
private:
typedef std::pair<uint64_t, SemiErrno> RetErrno;
static constexpr RetErrno retError(SemiErrno e) {