日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

NKStartup的参数KData

發布時間:2025/4/16 编程问答 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 NKStartup的参数KData 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

NKStartup的參數KData是什么?,其實就是一個數據結構,?它位于nkldr的data區。如下:

??????AREA?|.KDATA|,DATA,NOINIT

????????

KDataArea

PTs?????%???????0x4000??????????;?space?for?first-level?page?table

ExceptionVectors?

????????%???????0x0400????;?space?for?exception?vectors

????????%???????0x0400????;?space?for?interrupt?stack

????????%???????0x0100????;?space?for?FIQ?stack

????????%???????0x0700????;?space?for?Abort?stack

KPage??%???????0x0c00???;?space?for?kernel?stack?&?KDataStruct

HighPT?%???????0x0400???;?2nd?level?page?table?to?map?0xFFF00000

KDEnd?%???????0

撇開實現,?單純去理解的話,?和傳遞一個結構體指針沒有什么區別。?再問:?這個數據結構干嘛的,代表什么??這得明白高地址分配。

[高地址分配]

???^?0xFFFD0000

FirstPT?????????#?0x4000

?????????????#?0x4000

?????????????#?0x8000

?????????????#?0x10000???????;?not?mapped

ExVector???????#?0x0400????????;?vectors?and?table

?????????????#?0x0400??;?1K?interrupt?stack????????????(ffff0400)

IntStack???????#?0x0100?;?256?byte?FIQ?stack????????????(ffff0800)

FIQStack??????#?0x0700?;?2K-256?abort?stack????????????(ffff0900)

AbortStack??#0xC000-0x1000;not?mapped????????????????(ffff1000)

KDBase???????#?0x07E0????????;?2K-32?kernel?stack

KStack????????#?0x0020????????;?temporary?register?save?area

KData?????????#?0x400?????????;?kernel?data?area

FirstPT就是之前說的一級頁表所在。大小16kbytes。?后面保留了2塊區域,也許是提供給2級頁表使用。?ExVector是異常入口,?Arm有個機制,?通過設定p15,?可以將異常入口從0x18改成高地址FFFF0000.?IntStack,?FIQStack,?AbortStack,?KStack分別是各個模式以及內核的堆棧。?KData就是內核參數區了。

typedef?struct?ARM_HIGH?{

????ulong???firstPT[4096];??????//?0xFFFD0000:?1st?level?page?table

????char????reserved2[0x20000-0x4000];

????char????exVectors[0x400];???//?0xFFFF0000:?exception?vectors

????char????reserved3[0x2400-0x400];

????char????intrStack[0x400];???//?0xFFFF2400:?interrupt?stack

????char????reserved4[0x4900-0x2800];

????char????abortStack[0x700];??//?0xFFFF4900:?abort?stack

????char????reserved5[0x6800-0x5000];

????char????fiqStack[0x100];????//?0xFFFF6800:?FIQ?stack

????char????reserved6[0xC000-0x6900];

????char????kStack[0x800];??????//?0xFFFFC000:?kernel?stack

????struct?KDataStruct?kdata;???//?0xFFFFC800:?kernel?data?page

}?ARM_HIGH;

總結

以上是生活随笔為你收集整理的NKStartup的参数KData的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。