龙芯开源社区

 找回密码
 注册新用户(newuser)
查看: 3020|回复: 23

loongson3A写保护及可执行位

[复制链接]
发表于 2015-12-25 08:48:18 | 显示全部楼层 |阅读模式
   基于loongson3A平台,想要申请一页内存放内核关键数据,怎么保证其只读不能写及是否可执行?只修改页表属性是没有用的,在X86平台上是有一个CR0控制器,除了打开页表相关属性,CR0的相关控制位开启就可以。请问有没有人知道loongso3A平台上是怎么操作的吗?
发表于 2015-12-25 09:10:18 | 显示全部楼层
龙芯使用RI/XI。RI叫做抗读,XI叫做抗执行。
发表于 2015-12-25 09:13:06 | 显示全部楼层
华中科大一学生 发表于 2015-12-25 09:10
龙芯使用RI/XI。RI叫做抗读,XI叫做抗执行。
怎么保证其只读不能写及是否可执行?
 楼主| 发表于 2015-12-25 09:17:02 | 显示全部楼层
华中科大一学生 发表于 2015-12-25 09:10
龙芯使用RI/XI。RI叫做抗读,XI叫做抗执行。

谢谢啊!请问能说的详细点吗?这个是它的控制寄存器吗?我目前看的资料没有这两个的介绍。
发表于 2015-12-25 15:34:48 | 显示全部楼层
RI/XI是TLB中的属性位,抗读抗执行是RI和XI,抗写早就有了,就是D位。
想知道细节的话看MIPS R6的手册,一两句话可讲不清。
 楼主| 发表于 2015-12-29 16:00:51 | 显示全部楼层
华中科大一学生 发表于 2015-12-25 15:34
RI/XI是TLB中的属性位,抗读抗执行是RI和XI,抗写早就有了,就是D位。
想知道细节的话看MIPS R6的手册,一 ...

谢谢啊!RI/XI确实是TLB的属性位,只是我目前研究的内核好像不支持这两位,所以之前都没有注意到。4G的虚拟地址空间中只有低2G和最高端的某部分地址涉及到TLB转换,对于中间的kseg0和kseg1则是unmapped的,不经TLB转换,那这段地址能保证其只读不能写的属性吗?
发表于 2015-12-29 17:00:34 | 显示全部楼层
华中科大一学生 发表于 2015-12-25 15:34
RI/XI是TLB中的属性位,抗读抗执行是RI和XI,抗写早就有了,就是D位。
想知道细节的话看MIPS R6的手册,一 ...

hmm,为啥现在龙芯的文档都完全没有提这个东东啊?
发表于 2015-12-29 18:28:22 | 显示全部楼层
任若兮 发表于 2015-12-29 16:00
谢谢啊!RI/XI确实是TLB的属性位,只是我目前研究的内核好像不支持这两位,所以之前都没有注意到。4G的虚 ...

这是一个很有趣的问题。根据我现在的理解,对kseg0的只读只能间接实现。kseg0是不通过映射访问的地址,但是这不妨碍设置为映射访问。比如,设置一个页是把kseg的一个地址映射到kseg0你的地址上面。通过设置这个页的D位,就可以实现你的物理地址的只读。

说得对不对,还请foxen或别的大牛来验证。
发表于 2015-12-30 10:22:15 | 显示全部楼层
任若兮 发表于 2015-12-29 16:00
谢谢啊!RI/XI确实是TLB的属性位,只是我目前研究的内核好像不支持这两位,所以之前都没有注意到。4G的虚 ...

敢问你研究的是什么内核?
发表于 2015-12-30 12:44:49 | 显示全部楼层
华中科大一学生 发表于 2015-12-25 15:34
RI/XI是TLB中的属性位,抗读抗执行是RI和XI,抗写早就有了,就是D位。
想知道细节的话看MIPS R6的手册,一 ...

华少,一个请求。龙芯文档里还有像 RI/XI 这样应该有但是却没有的东东吗?如果可能的话,你可以写一个简单的列表,我希望慢慢把这些重要的东西都加到文档中去。

本版积分规则

小黑屋|手机版|Archiver|Lemote Inc.  

GMT+8, 2019-7-18 17:57 , Processed in 0.197809 second(s), 19 queries .

快速回复 返回顶部 返回列表