<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>