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指令的作用是什么相关推荐

  1. arm架构的linux芯片方案,ARM推64位处理器架构ARMV8及芯片[多图]

    北京时间10月31日消息,ARM宣布推出ARMv8 64位架构指令集之际,Applied Micro Circuits Corporation(AMCC)就推出了面向服务器市场的处理器X-Gene. ...

  2. linux下x86和arm架构区别

    x86和arm的比较 问题:两款主频差不多的芯片的移动端平板设备,一个是x86的因特尔i5,一个arm,x86耗电量会大,发热也严重 分析: 1.x86和arm架构定位不同,arm基于精简指令(RIS ...

  3. 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可以接 ...

  4. 关于ARM架构和cortexM内核的知识总结

    ARM究竟是什么 先了解下Acorn公司. Acorn计算机公司创立于1978年,公司位于英格兰的剑桥.是著名的ARM公司的前身.1991年,Acorn计算机公司剥离了ARM部门,成立了ARM公司. ...

  5. linux Rootkit:x86与ARM的内联内核函数Hooking

    介绍 几个月前,我添加了一个新的项目.(https://github.com/mncoppola/suterusu)         通过我的各种对路由器后门及内核漏洞利用的探险,我最近的兴趣转向Li ...

  6. 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 ...

  7. 杭电操作系统实验二 --- Linux 内核模块编程(arm架构华为云)

    一.题目介绍 掌握Linux 内核模块的基本概念 ·阅读教材7.3.2节Linux内核模块简介 ,网上查找资料,了解Linux内核模块的基本概念. ·阅读教材7.3.3内核模块编程基础 ,网上查找资料 ...

  8. 嵌入式linux的运行过程,ARM嵌入式设备Linux系统启动步骤和方式

    > 1). 简介本文引用地址:http://www.eepw.com.cn/article/201607/294237.htm 本文简单介绍ARM嵌入式设备基于嵌入式Linux操作系统时候的启动 ...

  9. arm架构linux内核调试实战

    前言 偶然间,发现了一个很好用的仓,可以十分方便地进行 arm 架构的 linux 内核调试,该仓地址如下 https://github.com/cc-droid/v-kernel-qemu ,对应的 ...

  10. 为 QEMU ARM 仿真器编译 Linux 内核:QEMU 模拟 ARM 环境

    QEMU 是一套由法布里斯·贝拉(Fabrice Bellard)所编写的以 GPL 许可证分发源码的模拟处理器,在GNU/Linux 平台上使用广泛.简单来说,QEMU 是一个虚拟机,与常见的 Vm ...

最新文章

  1. mac OS下显示.htaccess等隐藏文件
  2. python详细安装教程linux-Linux系统如何安装Python?新手教程
  3. 关于某些 Visual Studio Code 扩展程序无法在浏览器中运行的原因
  4. 【Linux】 命令收集
  5. tomcat依赖导入步骤_Tomcat长生不老之术——嵌入式
  6. 18.phpmyadmin 4.8.1 远程文件包含漏洞(CVE-2018-12613)
  7. .NET 5.0 Preview 2发布解析
  8. Qt文档阅读笔记-C++与QML混合编程(QML画饼状图)【通过信号与槽交互】
  9. Telnet配合netty打印数据(springboot+netty)
  10. python怎么安装requests模块_python安装requests第三方模块
  11. redis hashmap过期_看完这篇再也不怕 Redis 面试了
  12. 【金融】【python】CAPM实证分析
  13. mysql+文章显示_jsp+mysql文章内容分页显示
  14. css3中的box-shadow的用法与text-shadow的用法
  15. 用c语言编写六边形游戏,玩了这款搞花样的一笔画游戏,我的发量已经有点保不住了...
  16. php批量打印页面,SETE批量打印
  17. spring jpa Specification in 查询
  18. 机器学习——AdaBoosting
  19. DFS(深度优先搜索)和BFS(广度优先搜索)求迷宫路径问题的总结
  20. 苹果ios签名过期了,APP应用还能照常使用吗?

热门文章

  1. 小程序方法-小程序获取上一页的数据修改上一个页面的数据
  2. 使用Adorner显示WPF控件的边界点
  3. 重磅丨三年沉淀 2018全球人工智能技术大会蓄势待发
  4. MYSQL 数据库创建,修改等知识整理
  5. par函数的bg参数-控制图片的背景色
  6. Undefined index: submit in的错误处理
  7. springboot + mybatis 学英语网、背单词网站
  8. Mybatis mapper.xml中常用标签详解
  9. 交换机的源地址学习机制和帧转发方式习题
  10. ecshop php7 mysql_ecshop如何修改并支持PHP7