[英]ARM Cortex M4: test from unpriviledged mode if inside interrupt
我正在使用以下CPU:Stellaris LM4F120H5QR微控制器。 這個CPU包含一個MPU,我想完成這個事情。 但是在處於非特權模式下時,許多寄存器不再可訪問,而且我似乎找不到找到一個寄存器,該寄存器指示系統處於中斷內部並且可以從非特權模式讀取。
我需要這樣做,因為從中斷調用時,有些代碼可能會采用不同的路由。 如果我在非特權模式下執行了錯誤的檢查,則系統將立即跳至訪問故障。
那么,如何檢查從中斷中調用函數的方式是否從非特權模式中調用時不會產生故障?
根據ARM的文檔 , CONTROL
和ISR
寄存器可能正是您所需要的。
因此,使用CMSIS原型,代碼可能類似於:
if (__get_IPSR() || !(__get_CONTROL() & 0x1))
{
/* Privilged code */
}
else
{
/* Unprivileged code */
}
據我所知,甚至應該允許用戶線程讀取這些內容。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.