linux内核 header.s,arm架构的linux内核中,clrex指令的作用是什么
1. clrex指令的作用:
《arm architecture reference manual》B2-1292以下简称arm arm手册
The ClearExclusiveLocal() procedure takes as arguments the processor identifier processorid . The procedure clears the local record of processor processorid for which an address has had a request for an exclusive access. It is IMPLEMENTATION DEFINED whether this operation also clears the global record of processor processorid that an address has had a request for an exclusive access
该指令的作用就是在独占访问结束时,清除cpu中本地处理器针对某块内存区域的独占访问标志(核中的某个状态寄存器),以防在未清除时的其他操作,对系统产生影响。对于是否同时清除全局的独占访问标志,需要在设计cpu时的架构师决定。
2. clrex指令的作用很独特,在linux内核中用在什么地方呢?
用在如下地方:
(1)数据中止异常、指令预取中止异常的处理时调用
(调用linaro-aarch64/arch/arm/mm/abort-ev7.s v7_early_abort==》clrex)
(2)从svc模式下的irq异常、未定义指令异常、数据中止异常、指令预取中止异常,处理结束返回时调用
(调用宏:linaro-aarch64/arch/arm/kernel/entry-header.s svc_exit)
(3) 返回到用户层的快速系统调用/慢速系统调用(ret_slow_syscall,ret_fast_syscall==》
调用宏:linaro-aarch64/arch/arm/kernel/entry-header.s restore_user_regs==》clrex)
(4) run_all_tests 函数调用(==》kprobe_arm_test_cases==》TEST_UNSUPPORTED("clrex") ==》clrex)
该函数是一个驱动模块,可以动态加载。
如上所示:基本所有的异常都要用到该指令,系统调用的返回也能用到。
虽然异常和系统调用的代码在内核中不多,但是当内核运行起来时,异常和系统调用的执行频率特别高!
所以该指令还是非常有用的。
linux内核 header.s,arm架构的linux内核中,clrex指令的作用是什么相关推荐
- arm架构的linux芯片方案,ARM推64位处理器架构ARMV8及芯片[多图]
北京时间10月31日消息,ARM宣布推出ARMv8 64位架构指令集之际,Applied Micro Circuits Corporation(AMCC)就推出了面向服务器市场的处理器X-Gene. ...
- linux下x86和arm架构区别
x86和arm的比较 问题:两款主频差不多的芯片的移动端平板设备,一个是x86的因特尔i5,一个arm,x86耗电量会大,发热也严重 分析: 1.x86和arm架构定位不同,arm基于精简指令(RIS ...
- Linux C-SKY CPU,C-SKY CPU架构为Linux 5.6加入初始堆栈保护器支持
在Linux 5.6合并窗口结束两周后,今天接受了C-SKY CPU架构的一些后期更改. C-SKY的Guo Ren意外地错过了最近的Linux 5.6合并窗口,但是Linus Torvalds可以接 ...
- 关于ARM架构和cortexM内核的知识总结
ARM究竟是什么 先了解下Acorn公司. Acorn计算机公司创立于1978年,公司位于英格兰的剑桥.是著名的ARM公司的前身.1991年,Acorn计算机公司剥离了ARM部门,成立了ARM公司. ...
- linux Rootkit:x86与ARM的内联内核函数Hooking
介绍 几个月前,我添加了一个新的项目.(https://github.com/mncoppola/suterusu) 通过我的各种对路由器后门及内核漏洞利用的探险,我最近的兴趣转向Li ...
- UOS 1050e ARM架构(linux)安装TP-LINK TL-WN823N免驱版无线网卡驱动
环境: 主板:MBX-F20A-91 CPU:FT-2000/4 系统:UOS 1050e 无线网卡型号:TP-LINK TL-WN823N免驱版 使用了MBX-F20A-91的板子装了UOS的105 ...
- 杭电操作系统实验二 --- Linux 内核模块编程(arm架构华为云)
一.题目介绍 掌握Linux 内核模块的基本概念 ·阅读教材7.3.2节Linux内核模块简介 ,网上查找资料,了解Linux内核模块的基本概念. ·阅读教材7.3.3内核模块编程基础 ,网上查找资料 ...
- 嵌入式linux的运行过程,ARM嵌入式设备Linux系统启动步骤和方式
> 1). 简介本文引用地址:http://www.eepw.com.cn/article/201607/294237.htm 本文简单介绍ARM嵌入式设备基于嵌入式Linux操作系统时候的启动 ...
- arm架构linux内核调试实战
前言 偶然间,发现了一个很好用的仓,可以十分方便地进行 arm 架构的 linux 内核调试,该仓地址如下 https://github.com/cc-droid/v-kernel-qemu ,对应的 ...
- 为 QEMU ARM 仿真器编译 Linux 内核:QEMU 模拟 ARM 环境
QEMU 是一套由法布里斯·贝拉(Fabrice Bellard)所编写的以 GPL 许可证分发源码的模拟处理器,在GNU/Linux 平台上使用广泛.简单来说,QEMU 是一个虚拟机,与常见的 Vm ...
最新文章
- mac OS下显示.htaccess等隐藏文件
- python详细安装教程linux-Linux系统如何安装Python?新手教程
- 关于某些 Visual Studio Code 扩展程序无法在浏览器中运行的原因
- 【Linux】 命令收集
- tomcat依赖导入步骤_Tomcat长生不老之术——嵌入式
- 18.phpmyadmin 4.8.1 远程文件包含漏洞(CVE-2018-12613)
- .NET 5.0 Preview 2发布解析
- Qt文档阅读笔记-C++与QML混合编程(QML画饼状图)【通过信号与槽交互】
- Telnet配合netty打印数据(springboot+netty)
- python怎么安装requests模块_python安装requests第三方模块
- redis hashmap过期_看完这篇再也不怕 Redis 面试了
- 【金融】【python】CAPM实证分析
- mysql+文章显示_jsp+mysql文章内容分页显示
- css3中的box-shadow的用法与text-shadow的用法
- 用c语言编写六边形游戏,玩了这款搞花样的一笔画游戏,我的发量已经有点保不住了...
- php批量打印页面,SETE批量打印
- spring jpa Specification in 查询
- 机器学习——AdaBoosting
- DFS(深度优先搜索)和BFS(广度优先搜索)求迷宫路径问题的总结
- 苹果ios签名过期了,APP应用还能照常使用吗?