[gem5-dev] Change in gem5/gem5[develop]: arch-riscv: implement RemoteGDB::acc for FS mode.

2020-04-29 Thread Nils Asmussen (Gerrit) via gem5-dev
Nils Asmussen has submitted this change. (  
https://gem5-review.googlesource.com/c/public/gem5/+/26985 )


Change subject: arch-riscv: implement RemoteGDB::acc for FS mode.
..

arch-riscv: implement RemoteGDB::acc for FS mode.

Change-Id: I78b37db43fbb16d4dafa74294117e8beba62f903
Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/26985
Tested-by: kokoro 
Reviewed-by: Jason Lowe-Power 
Maintainer: Jason Lowe-Power 
---
M src/arch/riscv/remote_gdb.cc
1 file changed, 22 insertions(+), 1 deletion(-)

Approvals:
  Jason Lowe-Power: Looks good to me, approved; Looks good to me, approved
  kokoro: Regressions pass



diff --git a/src/arch/riscv/remote_gdb.cc b/src/arch/riscv/remote_gdb.cc
index 16b4585..7da666d 100644
--- a/src/arch/riscv/remote_gdb.cc
+++ b/src/arch/riscv/remote_gdb.cc
@@ -2,6 +2,7 @@
  * Copyright 2015 LabWare
  * Copyright 2014 Google, Inc.
  * Copyright (c) 2010 ARM Limited
+ * Copyright (c) 2020 Barkhausen Institut
  * All rights reserved
  *
  * The license below extends only to copyright in the software and shall
@@ -133,7 +134,9 @@

 #include 

+#include "arch/riscv/pagetable_walker.hh"
 #include "arch/riscv/registers.hh"
+#include "arch/riscv/tlb.hh"
 #include "cpu/thread_state.hh"
 #include "debug/GDBAcc.hh"
 #include "mem/page_table.hh"
@@ -150,7 +153,25 @@
 bool
 RemoteGDB::acc(Addr va, size_t len)
 {
-panic_if(FullSystem, "acc not implemented for RISCV FS!");
+if (FullSystem)
+{
+TLB *tlb = dynamic_cast(context()->getDTBPtr());
+unsigned logBytes;
+Addr paddr = va;
+
+PrivilegeMode pmode = tlb->getMemPriv(context(), BaseTLB::Read);
+SATP satp = context()->readMiscReg(MISCREG_SATP);
+if (pmode != PrivilegeMode::PRV_M &&
+satp.mode != AddrXlateMode::BARE) {
+Walker *walker = tlb->getWalker();
+Fault fault = walker->startFunctional(
+context(), paddr, logBytes, BaseTLB::Read);
+if (fault != NoFault)
+return false;
+}
+return true;
+}
+
 return context()->getProcessPtr()->pTable->lookup(va) != nullptr;
 }


--
To view, visit https://gem5-review.googlesource.com/c/public/gem5/+/26985
To unsubscribe, or for help writing mail filters, visit  
https://gem5-review.googlesource.com/settings


Gerrit-Project: public/gem5
Gerrit-Branch: develop
Gerrit-Change-Id: I78b37db43fbb16d4dafa74294117e8beba62f903
Gerrit-Change-Number: 26985
Gerrit-PatchSet: 9
Gerrit-Owner: Nils Asmussen 
Gerrit-Reviewer: Alec Roelke 
Gerrit-Reviewer: Bobby R. Bruce 
Gerrit-Reviewer: Jason Lowe-Power 
Gerrit-Reviewer: Nils Asmussen 
Gerrit-Reviewer: kokoro 
Gerrit-MessageType: merged
___
gem5-dev mailing list -- gem5-dev@gem5.org
To unsubscribe send an email to gem5-dev-le...@gem5.org
%(web_page_url)slistinfo%(cgiext)s/%(_internal_name)s


[gem5-dev] Change in gem5/gem5[develop]: arch-riscv: implement RemoteGDB::acc for FS mode.

2020-03-21 Thread Nils Asmussen (Gerrit)
Nils Asmussen has uploaded this change for review. (  
https://gem5-review.googlesource.com/c/public/gem5/+/26985 )



Change subject: arch-riscv: implement RemoteGDB::acc for FS mode.
..

arch-riscv: implement RemoteGDB::acc for FS mode.

Change-Id: I78b37db43fbb16d4dafa74294117e8beba62f903
---
M src/arch/riscv/remote_gdb.cc
1 file changed, 22 insertions(+), 1 deletion(-)



diff --git a/src/arch/riscv/remote_gdb.cc b/src/arch/riscv/remote_gdb.cc
index 16b4585..7da666d 100644
--- a/src/arch/riscv/remote_gdb.cc
+++ b/src/arch/riscv/remote_gdb.cc
@@ -2,6 +2,7 @@
  * Copyright 2015 LabWare
  * Copyright 2014 Google, Inc.
  * Copyright (c) 2010 ARM Limited
+ * Copyright (c) 2020 Barkhausen Institut
  * All rights reserved
  *
  * The license below extends only to copyright in the software and shall
@@ -133,7 +134,9 @@

 #include 

+#include "arch/riscv/pagetable_walker.hh"
 #include "arch/riscv/registers.hh"
+#include "arch/riscv/tlb.hh"
 #include "cpu/thread_state.hh"
 #include "debug/GDBAcc.hh"
 #include "mem/page_table.hh"
@@ -150,7 +153,25 @@
 bool
 RemoteGDB::acc(Addr va, size_t len)
 {
-panic_if(FullSystem, "acc not implemented for RISCV FS!");
+if (FullSystem)
+{
+TLB *tlb = dynamic_cast(context()->getDTBPtr());
+unsigned logBytes;
+Addr paddr = va;
+
+PrivilegeMode pmode = tlb->getMemPriv(context(), BaseTLB::Read);
+SATP satp = context()->readMiscReg(MISCREG_SATP);
+if (pmode != PrivilegeMode::PRV_M &&
+satp.mode != AddrXlateMode::BARE) {
+Walker *walker = tlb->getWalker();
+Fault fault = walker->startFunctional(
+context(), paddr, logBytes, BaseTLB::Read);
+if (fault != NoFault)
+return false;
+}
+return true;
+}
+
 return context()->getProcessPtr()->pTable->lookup(va) != nullptr;
 }


--
To view, visit https://gem5-review.googlesource.com/c/public/gem5/+/26985
To unsubscribe, or for help writing mail filters, visit  
https://gem5-review.googlesource.com/settings


Gerrit-Project: public/gem5
Gerrit-Branch: develop
Gerrit-Change-Id: I78b37db43fbb16d4dafa74294117e8beba62f903
Gerrit-Change-Number: 26985
Gerrit-PatchSet: 1
Gerrit-Owner: Nils Asmussen 
Gerrit-MessageType: newchange
___
gem5-dev mailing list
gem5-dev@gem5.org
http://m5sim.org/mailman/listinfo/gem5-dev