【ARMv8/v9 异常模型入门及渐进2 - 系统控制寄存器 SCTRL_ELx 介绍】

news2024/10/7 18:24:28

文章目录

    • SCTRL_ELx 介绍背景
    • ARMv8 SCTLR_ELx 介绍
    • ARMv9 SCTLR_ELx 介绍

SCTRL_ELx 介绍背景

由于在做DFD 测试过程中需要测试 EL1 状态下的 self-hosted trace 功能,但是这个测试是在UEFI中做的,在开发验证阶段UEFI默认是运行在EL3 下的,所以如果要完成测试就需要从EL3跳转到EL1, 由于在查找EL3 跳转到EL1的汇编代码时,发现ARMv8和ARMv9下两者在 SCTRL_EL3的配置是有差异的,所以就引入了下文对 SCTRL_ELx的介绍。

首先看下 ARMv8/ARMv9 从 EL3 跳转到 EL1 的汇编代码:
ARMv8:

		mrs x0, scr_el3 
		orr x0, x0, #(0x1 << 15) // 设置 SCR_EL3 的 HCE 位为 1 
		msr scr_el3, x0 
		mov x0, #(0x3 << 22) // 设置 SPSR_EL3 的 M[4:0] 位为 0b11011,即 EL1h 模式 
		msr spsr_el3, x0 
		adr x0, el1_entry_func // 设置 x0 寄存器为 EL1 的入口地址 
		msr elr_el3, x0 // 将 EL1 的入口地址存入 ELR_EL3 
		eret // 执行 ELRET 指令,跳转到 EL1

el1_entry_func:
	    // Set up TRBE
	    MOV      w0, #0
        LDR      x0, =TRBE_BASE_ADDRESS            // BASE=0x90000000      Trace Buffer Base pointer address
        MSR      TRBBASER_EL1, x0

ARMv9

        mrs x0, sctlr_el3
        orr x0, x0, #(0x1 << 28) // 设置 SCTLR_EL3 的 EE 位为 1
        msr sctlr_el3, x0
        mov x0, #(0x1 << 3) // 设置 HCR_EL2 的 RW 位为 1,使得 EL2 可以访问所有寄存器
        msr hcr_el2, x0
        mov x0, #(0x3 << 0) // 设置 CPTR_EL2 的 TFP、TCM、TWE 和 TCP 位为 0b1111,使得 EL2 可以访问所有 CP15 寄存器
        msr cptr_el2, x0
        mov x0, #(0x3 << 2) // 设置 SCR_EL3 的 RES1[2:0] 位为 0b011,即禁用 EL3 的访问权限检查
        msr scr_el3, x0
        adr x0, el1_entry_func // 设置 x0 寄存器为 EL1 的入口地址
        msr elr_el3, x0 // 将 EL1 的入口地址存入 ELR_EL3
        eret // 执行 ELRET 指令,跳转到 EL1

el1_entry_func:
	    // Set up TRBE
	    MOV      w0, #0
        LDR      x0, =TRBE_BASE_ADDRESS            // BASE=0x90000000      Trace Buffer Base pointer address
        MSR      TRBBASER_EL1, x0

ARMv8 SCTLR_ELx 介绍

armv8 架构中,SCTLR_ELx 寄存器是系统控制寄存器,用于控制系统的运行状态和特性。它包含了多个位域,每个位域控制某个特定的系统行为。以下是一些常见的位域及其功能:

  • M: 控制系统的运行模式,0表示使用AArch32模式,1表示使用AArch64模式。
  • C: 控制缓存的使能和行为。
  • I: 控制指令缓存的使能和行为。
  • A: 控制对齐检查的行为。
  • D: 控制数据缓存的使能和行为。
  • Z: 控制EL0使用的异常向量表。

armv9 架构中的 SCTRL_ELx 寄存器与armv8架构中的类似,但有一些新的位域,如:

  • EE: 控制异常的使能和行为。
  • UCE: 控制对未缓存的内存的访问。
  • FPE: 控制浮点异常的行为。
  • E0E: 控制EL0的异常向量表。
  • EAE: 控制对齐检查的行为。
  • WXN: 控制可执行代码的写保护。

总的来说,SCTLR_ELx 寄存器是非常重要的系统控制寄存器,它可以控制系统的运行模式、缓存的行为、对齐检查和异常的行为等。在系统的启动过程中,操作系统会初始化 SCTLR_ELx 寄存器的各个位域,以确保系统的正常运行。

ARMv9 SCTLR_ELx 介绍

ARMv9 中的 SCTLR_ELx 寄存器是系统控制寄存器,用于控制处理器的系统配置和行为。其中,x 可以是 0、1、2 或 3,分别代表 EL0、EL1、EL2 和 EL3。

下图为 SCTLR_EL1:
在这里插入图片描述
SCTLR_ELx 寄存器的具体功能和位定义如下:

  • M: MMU Enable bit。当该位为 1 时,启用 MMU。
  • A: Alignment check enable bit。当该位为 1 时,启用地址对齐检查。
  • C: Cache enable bit。当该位为 1 时,启用数据和指令缓存。
  • SA0: Stack Alignment Check for EL0. 当该位为 1 时,启用 EL0 栈的地址对齐检查。
  • SA: Stack Alignment Check bit。当该位为 1 时,启用所有栈的地址对齐检查。
  • CPAC: Coprocessor Access Control。用于控制协处理器的访问权限。
  • I: Instruction cache enable bit。当该位为 1 时,启用指令缓存。
  • D: Data cache enable bit。当该位为 1 时,启用数据缓存。
  • UCI: User Cache Inhibit。当该位为 1 时,禁用用户空间的缓存。
  • EE: Exception Endianness。当该位为 1 时,异常处理使用大端模式。
  • E0E: Endianness of EL0。当该位为 1 时,EL0 使用大端模式。
  • WxN: Write permission implies XN. 当该位为 1 时,写权限也意味着禁用执行权限。
  • WXN: Write permission implies Execute Never。当该位为 1 时,写权限也意味着禁用执行权限。
  • nTWE: Not trap WFE。当该位为 1 时,WFE 指令不会陷入到睡眠状态。
  • nTWI: Not trap WFI。当该位为 1 时,WFI 指令不会陷入到睡眠状态。
  • UCT: User Cache Type。用于控制用户空间的缓存类型。
  • nTLSMD: Not trap Load/Store Multiple Decrement。当该位为 1 时,LDM 和 STM 指令不会陷入到睡眠状态。
  • nTLE: Not trap Little-endian。当该位为 1 时,处理器不会陷入到睡眠状态,即使在小端模式下。
  • EE_LITTLE: Exception Endianness Little-endian。当该位为 1 时,异常处理使用小端模式。
  • SPINTMASK 位域控制了EL1级别的中断控制器(GIC)的中断屏蔽。当spintmask被设置为1时,GIC中断被屏蔽,当spiintmask被设置为0时,GIC中断被开启。
  • NMI bit位域控制了EL1级别的非屏蔽中断(NMI)的行为。当nmi bit被设置为1时,NMI被屏蔽,当nmi bit被设置为0时,NMI被开启。

SCTLR_ELx 寄存器中的一些位在不同的 EL 中具有不同的行为和意义。例如,EE 位在 EL1 和 EL2 中分别用于控制异常处理的字节顺序。
下图为 SCTLR_EL3:
在这里插入图片描述
在 armv9 架构中,SCTLR_EL3 寄存器还包含了tme和tmt bit位域,用于控制EL3级别的内存访问。它们的作用如下:

  • tme 位域控制了EL3级别的内存加密(Transparent Memory Encryption)的使能。当tme被设置为1时,EL3级别的内存访问将被加密,当tme被设置为0时,EL3级别的内存访问将不被加密。
  • tmt bit位域控制了EL3级别的内存隔离(Transparent Memory Tagging)的使能。当tmt bit被设置为1时,EL3级别的内存访问将被隔离,当tmt bit被设置为0时,EL3级别的内存访问将不被隔离。

总的来说,tme和tmt bit位域的作用是控制EL3级别的内存访问的加密和隔离。在一些安全性要求较高的系统中,这些位域的设置可以提高系统的安全性和保护机密数据。

推荐查阅:ChatGPT

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/662978.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

mac安装VsCode遇到的问题

万事开头难&#xff0c;头一次在安装生产工具的时候&#xff0c;就遇到了这么棘手的问题。百度和Google都试过了&#xff0c;网上的所有方式对我都没效果。最终自己阴差阳错解决了&#xff0c;我看内外网反馈这个问题的还挺多&#xff0c;在这里记录一下&#xff0c;希望可以帮…

Docker专题系列之十三:docker容器内安装vim编辑器

在使用docker时&#xff0c;有时候我们需要编辑配置文件&#xff0c;需要使用vim或者vi命令&#xff0c;但是会发现&#xff1a; root20ab69bedcdb:/etc/mysql# vim my.cnf bash: vim: command not found这是因为vim没有安装&#xff0c;使用如下命令安装&#xff1a; apt-ge…

Tomcat架构设计

Servlet规范 Servlet是JavaEE规范中的一种&#xff0c;主要是为了扩展Java作为Web服务的功能&#xff0c;统一定义了对应的接口&#xff0c;如Servlet接口&#xff0c;HttpRequest接口&#xff0c;HttpResponse接口&#xff0c;Filter接口。然后由具体的服务厂商来实现这些接口…

adroit java反编译

环境准备 靶机链接&#xff1a;百度网盘 请输入提取码 提取码&#xff1a;4e5y 虚拟机网络链接模式&#xff1a;桥接模式 攻击机系统&#xff1a;kali linux 2021.1 信息收集 1.探测目标靶机ip地址 arp-scan -l 2.用nmap探测靶机开放端口和服务情况 nmap -p- -A -T4 19…

二分类结局变量Logistic回归临床模型预测—— 模型评价(一)

本节讲的是二分类结局变量的临床模型预测,与之前讲的Cox回归不同,https://lijingxian19961016.blog.csdn.net/article/details/124088364https://lijingxian19961016.blog.csdn.net/article/details/124088364https://lijingxian19961016.blog.csdn.net/article/details/1240…

基于springboot+Redis的前后端分离项目(二)-【黑马点评】

&#x1f381;&#x1f381;资源文件分享 链接&#xff1a;https://pan.baidu.com/s/1189u6u4icQYHg_9_7ovWmA?pwdeh11 提取码&#xff1a;eh11 商户查询缓存&#xff0c;缓存更新策略&#xff0c;缓存穿透 商户查询缓存a.什么是缓存1.为什么要使用缓存2.如何使用缓存 b.添加商…

一文读懂ISM频段

ISM&#xff08;工业、科学、医疗&#xff09;频段为国际电信联盟&#xff08;ITU&#xff09;《无线电规则》定义的指定无线电频段。这些频段是为电信之外的其他射频用途挪出的频段。因此&#xff0c; ISM频段虽然理论上可用于电信用途&#xff0c;但使用ISM频段的电信设备必须…

南卡OE Pro开放式耳机开售,将音质和舒适度提升至行业巅峰!

随着科技的不断发展和创新&#xff0c;开放式耳机作为一种全新的音频体验方式正逐渐走红。而在这个充满竞争的市场上&#xff0c;南卡品牌的最新款OE Pro开放式耳机如今上市&#xff0c;以其出色的表现和全能的功能成为行业的颠覆者。 南卡品牌在骨传导耳机音频技术领域有着超过…

【系统开发】尚硅谷 - 谷粒商城项目笔记(三):OSS阿里云存储

文章目录 OSS阿里云存储OSS基础配置OSS跨域设置原生sdk方式上传阿里云sdk方式上传将oss配置加入nacos加入网关的路由分发和前端整合测试 OSS阿里云存储 OSS基础配置 上传的账号信息存储在应用服务器 上传前先找应用服务器要一个policy上传策略&#xff0c;生成防伪签名 OSS跨…

帮助中心的设计指南

帮助中心是一个网站或应用程序的重要组成部分&#xff0c;因为它可以让用户轻松找到他们需要的信息。正确设计和实施一个高效的帮助中心可以确保用户满意度提高&#xff0c;并增加品牌忠诚度。本文将介绍如何设计一个优秀的帮助中心。 确定帮助中心的目标 在设计帮助中心之前&…

风控安全产品系统设计的个人感悟

背景 本篇文章会从系统架构设计的角度&#xff0c;分享在对业务安全风控相关基础安全产品进行系统设计时遇到的问题难点及其解决方案。 内容包括三部分&#xff1a;&#xff08;1&#xff09;风控业务架构&#xff1b;&#xff08;2&#xff09;基础安全产品的职责&#xff1…

重新安装ROG Armoury Crate

文章目录 使用官方卸载工具卸载奥创安装奥创 更新奥创之后 Aura Sync 坏了&#xff0c;无法调整灯光&#xff0c;打开 Aura Creator 提示服务运行异常&#xff1a; 在任务管理器中随便禁用了几个奥创、Asus的服务后&#xff0c;再次打开 Aura Creator&#xff0c;提示出了具…

【码银送书第一期】通用人工智能:初心与未来

目录 前言 正文 内容简介 作者简介 译者简介 目录 前言 自20世纪50年代图灵在其划时代论文《计算机器与智能》中提出“图灵测试”以及之后的达特茅斯研讨会开始&#xff0c;用机器来模仿人类学习及其他方面的智能&#xff0c;即实现“人工智能”&#xff08;Artificial …

CSS实现盒子模型水平居中、垂直居中、水平垂直居中的多种方法

CSS实现盒子模型水平居中、垂直居中、水平垂直居中的多种方法 CSS实现盒子模型水平居中的方法 水平居中效果图 水平居中 全局样式 .parent { color: #FFFFFF; height: 200px; width: 200px; margin: 0 auto; background-color: #000000;} .child { widt…

No module named ‘torch_geometric‘解决办法

参考链接&#xff1a; https://blog.csdn.net/weixin_47779152/article/details/120570367 https://data.pyg.org/whl/torch-1.12.0%2Bcu113.html https://blog.csdn.net/qq_44832009/article/details/129351554 https://blog.csdn.net/qq_43750528/article/details/130644899 …

五、elasticsearch查询操作

目录 数据准备 1、查询指定字段包含指定内容的文档 2、指定输出的文档字段查询&#xff08;“_source”&#xff09; 3、排序查询&#xff08;默认根据指定字段升序asc排序&#xff09;&#xff08;“sort”&#xff09; 4、分页查询 5、布尔查询&#xff08;多条件查询&…

中国人民大学与加拿大女王大学金融硕士——在职读研撑起未来的帆

威廉姆曾说&#xff1a;“人生就是一次航行&#xff0c;航行中必然会遇到从各方面袭来的劲风。然而每一阵风都会加快你的航速&#xff0c;只要你稳住航舵&#xff0c;即使暴风雨也不会使你偏离航向”。在浩瀚的大海中&#xff0c;每个人都是一只独立的小船&#xff0c;掌舵的人…

前四周我安卓的傻逼问题

1&#xff09;这三个文档在在什么时候会使用到&#xff0c;以及主要是涉及到了哪一块的知识 2&#xff09;.ProjectConfig宏的配置 &#xff0c;这个在linux里面有什么用 3&#xff09;代码远程地址等等&#xff0c;这些是公司仓库&#xff0c;还是公共仓库&#xff0c;为啥有…

品牌新闻稿怎么写得有高度和深度?纯干货

品牌新闻稿是公司或品牌向公众发布的一种公关宣传工具&#xff0c;需要在选题、素材搜集整理、观点和见解、大纲搭建等方面做好准备&#xff0c;以写出高度和深度兼备的品牌新闻稿&#xff0c;接下来伯乐网络传媒就来给大家分享一下。 一、品牌新闻稿选题 品牌新闻稿的选题应该…

vue-devtools浏览器调试工具离线安装教程

vue-devtools浏览器调试工具离线安装教程 vue-devtools浏览器调试工具离线安装是下载源码&#xff0c;通过本地编译之后&#xff0c;在放到浏览器上 这里写目录标题 vue-devtools浏览器调试工具离线安装教程1.下载源码2.执行安装插件包命令3.安装插件 1.下载源码 [不推荐]在gi…