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

文章目录

    • 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 指令,跳转到 EL1el1_entry_func:// Set up TRBEMOV      w0, #0LDR      x0, =TRBE_BASE_ADDRESS            // BASE=0x90000000      Trace Buffer Base pointer addressMSR      TRBBASER_EL1, x0

ARMv9

        mrs x0, sctlr_el3orr x0, x0, #(0x1 << 28) // 设置 SCTLR_EL3 的 EE 位为 1msr sctlr_el3, x0mov x0, #(0x1 << 3) // 设置 HCR_EL2 的 RW 位为 1,使得 EL2 可以访问所有寄存器msr hcr_el2, x0mov x0, #(0x3 << 0) // 设置 CPTR_EL2 的 TFP、TCM、TWE 和 TCP 位为 0b1111,使得 EL2 可以访问所有 CP15 寄存器msr cptr_el2, x0mov x0, #(0x3 << 2) // 设置 SCR_EL3 的 RES1[2:0] 位为 0b011,即禁用 EL3 的访问权限检查msr scr_el3, x0adr x0, el1_entry_func // 设置 x0 寄存器为 EL1 的入口地址msr elr_el3, x0 // 将 EL1 的入口地址存入 ELR_EL3eret // 执行 ELRET 指令,跳转到 EL1el1_entry_func:// Set up TRBEMOV      w0, #0LDR      x0, =TRBE_BASE_ADDRESS            // BASE=0x90000000      Trace Buffer Base pointer addressMSR      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.rhkb.cn/news/16967.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

关于UVC设备拥有两个/dev/video*节点的原因以及来历?

在ubuntu18.04/ubuntu16.04系统上,插入UVC设备,你会发现V4L2框架替它创建了两个video设备节点,分别是 /dev/video0, /dev/video1: 经过实际测试,可以通过/dev/video0获取图像,但是无法通过/dev/video1获取图像,具体的试验请看下面两篇博客: V4L2子系统架构设计初探 美…

从千亿模型到ChatGPT的⼀点思考

近年来人工智能的快速发展受到社会各界的广泛关注&#xff0c;超大规模预训练模型取得了突飞猛进的进步。唐杰从OpenAI发布的大规模自然语言预训练模型GPT-3谈起&#xff0c;详细介绍了大模型的进化史&#xff0c;及其所表现出来的能够更好处理现实世界复杂性问题的能力与可能性…

230502-LLM-Vicuna介绍、安装与注意事项整理

排名模型Elo 得分描述许可证1&#x1f947; GPT-41274OPENAI 公司&#xff1a;ChatGPT-4OpenAI公司专有2&#x1f948;Claude-v11224Anthtopic 公司&#xff1a;ClaudeAnthtopic公司专有3&#x1f949; GPT-3.5-turbo1155OPENAI 公司&#xff1a;ChatGPT-3.5OpenAI公司专有4⭐️…

ChatGPT又为我省了一笔钱

作为家长你可能会关注。我周围的朋友&#xff0c;一般都会请外教来帮助孩子提高英语口语能力。然而&#xff0c;外教的费用不菲&#xff0c;这也成为了很多人的负担。但现在&#xff0c;有了ChatGPT语音插件&#xff0c;我们可以省下雇佣外教的钱&#xff0c;而又能有效地提高英…

跟着ChatGPT手把实现一个websocket连接管理器! 毛骨悚然

全是贴图了&#xff1a; 多说无益&#xff01;&#xff01;&#xff01; 开始&#xff1a; 实现一个某安的连接管理&#xff1a; 其中步骤1到7列的明明白白&#xff0c;而且一开始就提出了要有connectionManager&#xff0c;这已经是很职业的方式了&#xff0c;至少不是学生气&…

2023 商业化ChatGpt Web源码

简介 一款使用React搭建的一款可商业化的ChatGpt Web应用,支持接入支付宝当面付及易支付 主要功能 后台管理系统,可对用户,Token,商品,卡密等进行管理精心设计的 UI&#xff0c;响应式设计极快的首屏加载速度&#xff08;~100kb&#xff09;支持Midjourney绘画和DALLE模型绘…

基于ChatGPT的文档知识库客服系统-支持上传网址/文本/docx等数据

现在&#xff0c;很多公司都有自己的内容知识库&#xff0c;会产生大量的碎片话的内部知识&#xff0c;但是这样内部知识难以整合搜索。 我开发的文档知识库客服系统 gofly.v1kf.com &#xff0c;可以应用于企业内部知识库管理&#xff0c;用户可以使用自然语言提问&#xff0c…

学编程一定要数学很好吗?看到网友这样说,我松了一口气 ...

学好数理化&#xff0c;走遍全天下&#xff01;小时候&#xff0c;这句顺口溜时常在耳边响起&#xff0c;而迈入编程行业以后&#xff0c;又有人想问&#xff1a;我数学不好&#xff0c;能写好代码吗&#xff1f; 不过最近的 MIT 神经科学家在 eLife期刊发表了一项新研究&#…

答读者:数学不好,能学好算法吗?

点击关注上方“五分钟学算法”&#xff0c; 设为“置顶或星标”&#xff0c;第一时间送达干货。 转自是不是很酷 这是在我的知识星球上&#xff0c;一个同学问我的问题。 波波老师您好。 我今年 28 了&#xff0c;也算是科班出身&#xff0c;但是大学的时候基本没怎么上过课。毕…

5小时掌握提示词工程,写出高价值大模型Prompt!中文!免费!

写出优质的提示词&#xff0c;让AI生成惊艳的图文作品。 ——这就是如今年薪百万仍一人难求的提示词工程师们在解决的问题。大语言模型时代下&#xff0c;不断涌现出众多让人瞳孔地震的绘画、拍案叫绝的文案&#xff0c;它们的创作者并非传统定义的画家、作家&#xff0c;而是这…

大模型部署的方案

借着热点&#xff0c;简单聊聊大模型的部署方案&#xff0c;作为一个只搞过CV部署的算法工程师&#xff0c;在最近LLM逐渐改变生活的大背景下&#xff0c;猛然意识到LLM部署也是很重要的。大模型很火&#xff0c;而且确实有用&#xff08;很多垂类场景可以针对去训练&#xff0…

大大大模型部署方案抛砖引玉

作者 | Oldpan 编辑 | oldpan博客 点击下方卡片&#xff0c;关注“自动驾驶之心”公众号 ADAS巨卷干货&#xff0c;即可获取 点击进入→自动驾驶之心【模型部署】技术交流群 借着热点&#xff0c;简单聊聊大模型的部署方案&#xff0c;作为一个只搞过CV部署的算法工程师&#…

为什么很多企业把35岁视为分水岭

(点击即可收听) 为什么很多企业把35岁视为分水岭 有时候,别人的故事,若干年后,就是自己的故事,只要身在互联网这个行业里,可以说,每个人都避免不了35岁危机 不要五十步笑百步 前阵子,朋友圈一位行业知名大佬,35岁,每天兢兢业业,任劳任怨,本以为安稳渡过3个月试用期,正快要转正时…

AI冲击人工:资深翻译3年前就接受了可能到来的失业,原画师被取代后又出现了“AI概念师”...

九派新闻AI会取代我们吗&#xff1f; 高盛公司最新一份研究报告指出&#xff0c;ChatGPT等AI领域出现突破后&#xff0c;全球预计将有3亿个工作岗位被生成式AI取代。OpenAI近日发表论文称&#xff0c;如果一项工作使用AI能减少50%以上的时间&#xff0c;那么它就是可替代的。其…

项目完成小结:使用Blazor和gRPC开发大模型客户端

先介绍下这个项目。 最近我一直在探索大语言模型&#xff0c;根据不同场景训练了好几个模型&#xff0c;为了让用户测试使用&#xff0c;需要开发前端。 这时候&#xff0c;用 Gradio 搭建的前端是不太够的&#xff0c;虽说 GitHub 上也有一堆开源的 ChatGPT 前端&#xff0c…

Mac 上的搜狗输入法卡顿问题

我的 Mac 使用的中文输入法是搜狗拼音输入法&#xff0c;一直有一个问题&#xff0c;就是 Mac 开机太久&#xff0c;输入法会出现卡顿问题&#xff0c;按下按键 0.5s 后需才会显示对应的汉字&#xff0c;用着非常难受&#xff0c;以前这种情况我都是通过重启 Mac 来解决&#x…

大语言模型将如何影响软件开发?

当人人具备编写代码的能力之后&#xff0c;这将会给软件生产和分配带来哪些结构性的变化&#xff1f; 原文链接&#xff1a;https://www.geoffreylitt.com/2023/03/25/llm-end-user-programming.html 未经授权&#xff0c;禁止转载&#xff01; 作者 | Geoffrey Litt 译者 | 弯…

提示词工程让儿童编程轻而易举

编写长长的代码时常令人头疼。尤其是小朋友&#xff0c;打字不快&#xff0c;但想象力丰富。 现在借助chatgpt。 一切变得超级简单。 1. https://github.com/roocell/gptCozmo 2. https://github.com/Bhood23/CozmoGPT while True:from pyChatGPT import ChatGPTimport speec…

【软件简史】怎样理解 Alan Kay 曾在1984 年写道:“我们希望像以前编辑文档一样编辑我们的工具” 这句话 —— LLM 将如何影响软件的创建?

近段时间,大语言模型(LLM)掀起了一股狂潮。 OpenAI 发布的 GPT-4 模型在包括编程在内的各个功能上都取得了令人瞩目的进步。微软研究院发布了一篇论文,展示了 GPT-4 能够在没有太多提示的情况下生成非常复杂的代码,如 3D 视频游戏。与此同时,OpenAI 还发布了 ChatGPT 插…

宇宙即计算~一种新科学:斯蒂芬·沃尔夫勒姆

斯蒂芬沃尔夫勒姆这个名字&#xff0c;在中文世界里可能远谈不上家喻户晓&#xff1b;但他的英文名Stephen Wolfram恐怕反而却要熟悉得多。 他是Mathematica软件的发明者和首席设计师&#xff0c;被广泛地认为是当今科学和计算技术中最重要的革新者之一。 大名鼎鼎的数学软件Ma…