技術問答
技術文章
iT 徵才
Tag
聊天室
2024 鐵人賽
登入/註冊
問答
文章
Tag
邦友
鐵人賽
搜尋
2024 iThome 鐵人賽
DAY
5
2
自我挑戰組
上班辦公室,下班讀書室:RISC-V / ARM64 體系結構編程與實踐
系列 第
5
篇
[鐵人賽] Day 5 蝸步-3
16th鐵人賽
ycliang
團隊
晶心壯士III: ALcHemist
2024-09-05 22:13:56
223 瀏覽
分享至
今日的行程:
辦公室: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鐵人賽
參賽組數
1064
組
團體組數
40
組
累計文章數
22198
篇
完賽人數
602
人
看影片追技術
看更多
{{ item.subject }}
{{ item.channelVendor }}
|
{{ formatDate(item.duration) }}
直播中
熱門tag
看更多
15th鐵人賽
16th鐵人賽
13th鐵人賽
14th鐵人賽
12th鐵人賽
11th鐵人賽
鐵人賽
2019鐵人賽
javascript
2018鐵人賽
python
2017鐵人賽
windows
php
c#
windows server
linux
css
react
vue.js
熱門問題
如何讓在中國的同事可以穩定的使用台灣總部的系統服務
熟識南投軟體工程師推薦
Web Application 與Web Service 的差異
如何練國考資訊題?
求救,erp 無法使用,ping封包 100% 丟失
Active Directory 環境中時間無法同步問題
如何以php抓取html文件的特定元素,並且依照抓取順序填入頁碼
fortigate 60E 配IP給無限AP問題
電腦版Outlook 封存郵件無法包含有作標幟的郵件
switch 指令的應用
熱門回答
如何讓在中國的同事可以穩定的使用台灣總部的系統服務
求救,erp 無法使用,ping封包 100% 丟失
Active Directory 環境中時間無法同步問題
熟識南投軟體工程師推薦
如何以php抓取html文件的特定元素,並且依照抓取順序填入頁碼
熱門文章
大總結 - Win11 是對企業和私人的大改版
卷 31:iThome 鐵人賽寫作攻略——新手必看指南
每日一篇學習筆記 直到我做完專題 :( [Day1]
每日一篇學習筆記 直到我做完專題 :( [Day2]
Python 字串string 方法,zfill() & f"{i:0xd}" &浮點數格式化
IT邦幫忙
×
標記使用者
輸入對方的帳號或暱稱
Loading
找不到結果。
標記
{{ result.label }}
{{ result.account }}