技術問答
技術文章
iT 徵才
聊天室
2026 鐵人賽
登入/註冊
問答
文章
Tag
邦友
鐵人賽
搜尋
2024 iThome 鐵人賽
DAY
5
2
自我挑戰組
上班辦公室,下班讀書室:RISC-V / ARM64 體系結構編程與實踐
系列 第
5
篇
[鐵人賽] Day 5 蝸步-3
16th鐵人賽
ycliang
團隊
晶心壯士III: ALcHemist
2024-09-05 22:13:56
734 瀏覽
分享至
今日的行程:
辦公室:10:00 - 19:45
讀書室:20:30 - 22:00
正片開始
今日的記錄:
RISC-V 體系結構編程與實踐: Ch 1 基礎知識
mstatus.MPRV (Modified PRiVilege) 用來修改實際的權限層級 (effective privilege),我的理解是 load/store 指令作用的位址會根據這個 bit 來決定要不要做 VA PA 轉換。
MPRV == 0, load/store 指令作用的位址,使用的是當前權限層級的記憶體轉址和保護機制
MPRV == 1, load/store 指令作用的位址,使用是經過轉址以及保護的
實際使用的例子:
模擬 misaligned load/store
: 可以在 OpenSBI 專案中看到,想要讓不支援 misaligned load/store 的硬體,可以由軟體來模擬
如果不支援 misaligned load/store 的話,在 misaligned load/store 發生時,會產生 exception,進到 M-mode 的 trap handler,在判斷是 misaligned load/store 之後,可以透過設定 MPRV,來模擬 S-mode 下的記憶體存取行為。
lib/sbi/sbi_trap_ldst.c
: 模擬函數的實體
lib/sbi/sbi_unpriv.c
: inline asm 實作模擬函數的底層行為,有夠難看懂XDD,因為要去讀的記憶體會經過 translation 和 protection,還有可能會發生 exception,所以這邊做的事情是,自行實作一個小的 exception handler 來處理,如果沒發生 exception 就把讀到的值回傳回去,如果發生 exception (page fault, pmp access fault),就回傳 0,並且由 tinfo 來判斷是否有發生過 exception,來決定這個值可不可以用
除錯功能
: 經P同事指導XD,還可以在 OpenOCD 專案中看到,因為 debug 行為會在 D-mode 這個層級,是不會有記憶體轉址(translation)的行為,所以只能存取 PA;有了這個 MPRV,就也可以使用 VA 來做觀察了
src/target/riscv/riscv-013.c
總結
稍微有印象的是在 OpenSBI 裡面的實作,今天第一次知道原來有 debug 用途,驚喜驚喜~
留言
追蹤
檢舉
上一篇
[鐵人賽] Day 4 蝸步-2
下一篇
[鐵人賽] Day 6 New Extensions: Svvptc
系列文
上班辦公室,下班讀書室:RISC-V / ARM64 體系結構編程與實踐
共
30
篇
目錄
RSS系列文
訂閱系列文
5
人訂閱
26
# [鐵人賽] Day 26 ARM 第 13 章節 GIC-V2 (2)
27
[鐵人賽] Day 27 RISC-V 第 18 章節 Vector extension
28
[鐵人賽] Day 28 RISC-V 第 18 章 Vector Extension (2)
29
[鐵人賽] Day 29 RISC-V 第 18 章 Vector Extension (3)
30
[鐵人賽] Day 30 總結與回顧
完整目錄
熱門推薦
{{ item.subject }}
{{ item.channelVendor }}
|
{{ item.webinarstarted }}
|
{{ formatDate(item.duration) }}
直播中
立即報名
尚未有邦友留言
立即登入留言
iThome鐵人賽
參賽組數
902
組
團體組數
37
組
累計文章數
19833
篇
完賽人數
528
人
看影片追技術
看更多
{{ item.subject }}
{{ item.channelVendor }}
|
{{ formatDate(item.duration) }}
直播中
熱門tag
15th鐵人賽
16th鐵人賽
13th鐵人賽
14th鐵人賽
17th鐵人賽
12th鐵人賽
11th鐵人賽
鐵人賽
2019鐵人賽
javascript
2018鐵人賽
python
2017鐵人賽
windows
php
c#
linux
windows server
css
react
熱門問題
Windows本機administrator全部變成歡迎
現在Mail Server上雲365 Outlook不能向下相容?
(已解決)目前使用AWS的Lightsail服務,但沒使用RDS,一直被RDS服務扣錢
Entra如何修改proxyAddresses??
使用按鍵精靈完成ERP系統的單據輸入作業
Exchange online journal到外部....
SUPERSET 問題請教
熱門回答
現在Mail Server上雲365 Outlook不能向下相容?
使用按鍵精靈完成ERP系統的單據輸入作業
Exchange online journal到外部....
熱門文章
【實作】MCP Tool Poisoning 攻擊重現與防禦:用 Python 寫一個安全閘道來攔截惡意工具調用
2026 年前端工程師的生存戰:當程式碼不再是瓶頸,什麼才是你的核心價值?
別再把 AI Agent 學成碎片:一篇搞懂 Agent Systems 的四層技術棧
[POG-Task-05] 對待任務與提示詞如同程式碼一樣
我寫了一個 CLI 工具,因為教 PM 什麼是 /etc/hosts 比自己做還累
IT邦幫忙
×
標記使用者
輸入對方的帳號或暱稱
Loading
找不到結果。
標記
{{ result.label }}
{{ result.account }}