<p>Patrick Georgi <strong>merged</strong> this change.</p><p><a href="https://review.coreboot.org/28394">View Change</a></p><div style="white-space:pre-wrap">Approvals:
  build bot (Jenkins): Verified
  Jonathan Neuschäfer: Looks good to me, approved

</div><pre style="font-family: monospace,monospace; white-space: pre-wrap;">riscv: Add DEFINE_MPRV_READ_MXR to read execution-only page<br><br>Must to set MXR, when needs to read the page which is execution-only.<br>So make this change.<br><br>Change-Id: I19519782fe791982a8fbd48ef33b5a92a3c48bfc<br>Signed-off-by: Xiang Wang <wxjstz@126.com><br>Reviewed-on: https://review.coreboot.org/28394<br>Tested-by: build bot (Jenkins) <no-reply@coreboot.org><br>Reviewed-by: Jonathan Neuschäfer <j.neuschaefer@gmx.net><br>---<br>M src/arch/riscv/include/vm.h<br>1 file changed, 16 insertions(+), 3 deletions(-)<br><br></pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;"><span>diff --git a/src/arch/riscv/include/vm.h b/src/arch/riscv/include/vm.h</span><br><span>index a30d6bb..749c9c8 100644</span><br><span>--- a/src/arch/riscv/include/vm.h</span><br><span>+++ b/src/arch/riscv/include/vm.h</span><br><span>@@ -38,11 +38,11 @@</span><br><span> void mstatus_init(void); // need to setup mstatus so we know we have virtual memory</span><br><span> </span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-#define DEFINE_MPRV_READ(name, type, insn)                              \</span><br><span style="color: hsl(120, 100%, 40%);">+#define DEFINE_MPRV_READ_FLAGS(name, type, insn, flags)                      \</span><br><span>    static inline type name(type *p);                               \</span><br><span>    static inline type name(type *p)                                \</span><br><span>    {                                                               \</span><br><span style="color: hsl(0, 100%, 40%);">-               size_t mprv = MSTATUS_MPRV;                             \</span><br><span style="color: hsl(120, 100%, 40%);">+             size_t mprv = flags;                                    \</span><br><span>            type value;                                             \</span><br><span>            asm (                                                   \</span><br><span>                    "csrs              mstatus, %1\n"                     \</span><br><span>@@ -53,6 +53,12 @@</span><br><span>               return value;                                           \</span><br><span>    }</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+#define DEFINE_MPRV_READ(name, type, insn) \</span><br><span style="color: hsl(120, 100%, 40%);">+   DEFINE_MPRV_READ_FLAGS(name, type, insn, MSTATUS_MPRV)</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+#define DEFINE_MPRV_READ_MXR(name, type, insn) \</span><br><span style="color: hsl(120, 100%, 40%);">+    DEFINE_MPRV_READ_FLAGS(name, type, insn, MSTATUS_MPRV | MSTATUS_MXR)</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span> #define DEFINE_MPRV_WRITE(name, type, insn)                           \</span><br><span>    static inline void name(type *p, type value);                   \</span><br><span>    static inline void name(type *p, type value)                    \</span><br><span>@@ -83,6 +89,12 @@</span><br><span> DEFINE_MPRV_READ(mprv_read_u64, uint64_t, ld)</span><br><span> DEFINE_MPRV_READ(mprv_read_long, long, ld)</span><br><span> DEFINE_MPRV_READ(mprv_read_ulong, unsigned long, ld)</span><br><span style="color: hsl(120, 100%, 40%);">+DEFINE_MPRV_READ_MXR(mprv_read_mxr_u8, uint8_t, lbu)</span><br><span style="color: hsl(120, 100%, 40%);">+DEFINE_MPRV_READ_MXR(mprv_read_mxr_u16, uint16_t, lhu)</span><br><span style="color: hsl(120, 100%, 40%);">+DEFINE_MPRV_READ_MXR(mprv_read_mxr_u32, uint32_t, lwu)</span><br><span style="color: hsl(120, 100%, 40%);">+DEFINE_MPRV_READ_MXR(mprv_read_mxr_u64, uint64_t, ld)</span><br><span style="color: hsl(120, 100%, 40%);">+DEFINE_MPRV_READ_MXR(mprv_read_mxr_long, long, ld)</span><br><span style="color: hsl(120, 100%, 40%);">+DEFINE_MPRV_READ_MXR(mprv_read_mxr_ulong, unsigned long, ld)</span><br><span> DEFINE_MPRV_WRITE(mprv_write_u8, uint8_t, sb)</span><br><span> DEFINE_MPRV_WRITE(mprv_write_u16, uint16_t, sh)</span><br><span> DEFINE_MPRV_WRITE(mprv_write_u32, uint32_t, sw)</span><br><span>@@ -90,8 +102,9 @@</span><br><span> DEFINE_MPRV_WRITE(mprv_write_long, long, sd)</span><br><span> DEFINE_MPRV_WRITE(mprv_write_ulong, unsigned long, sd)</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+#undef DEFINE_MPRV_READ_FLAGS</span><br><span> #undef DEFINE_MPRV_READ</span><br><span style="color: hsl(120, 100%, 40%);">+#undef DEFINE_MPRV_READ_MXR</span><br><span> #undef DEFINE_MPRV_WRITE</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span> #endif</span><br><span></span><br></pre><p>To view, visit <a href="https://review.coreboot.org/28394">change 28394</a>. To unsubscribe, or for help writing mail filters, visit <a href="https://review.coreboot.org/settings">settings</a>.</p><div itemscope itemtype="http://schema.org/EmailMessage"><div itemscope itemprop="action" itemtype="http://schema.org/ViewAction"><link itemprop="url" href="https://review.coreboot.org/28394"/><meta itemprop="name" content="View Change"/></div></div>

<div style="display:none"> Gerrit-Project: coreboot </div>
<div style="display:none"> Gerrit-Branch: master </div>
<div style="display:none"> Gerrit-MessageType: merged </div>
<div style="display:none"> Gerrit-Change-Id: I19519782fe791982a8fbd48ef33b5a92a3c48bfc </div>
<div style="display:none"> Gerrit-Change-Number: 28394 </div>
<div style="display:none"> Gerrit-PatchSet: 4 </div>
<div style="display:none"> Gerrit-Owner: Xiang Wang <wxjstz@126.com> </div>
<div style="display:none"> Gerrit-Reviewer: Jonathan Neuschäfer <j.neuschaefer@gmx.net> </div>
<div style="display:none"> Gerrit-Reviewer: Patrick Georgi <pgeorgi@google.com> </div>
<div style="display:none"> Gerrit-Reviewer: Philipp Hug <philipp@hug.cx> </div>
<div style="display:none"> Gerrit-Reviewer: Shawn Chang <citypw@gmail.com> </div>
<div style="display:none"> Gerrit-Reviewer: Xiang Wang <wxjstz@126.com> </div>
<div style="display:none"> Gerrit-Reviewer: build bot (Jenkins) <no-reply@coreboot.org> </div>