PowerPC 学习笔记

对PowerPC的学习笔记 寄存器 GPU(General Purpose Registers)                                       32 PC(Program Counter)/NIP(Next Instruction Pointer)  LR(Link Register) CR(Condition Register) 指令 使用RISC架构,每条指令为 阅读详情

E500  内核的寄存器和运行模式:

E500 内核有两组寄存器,分别是用户模式寄存器(User-Level Register, ULR)与超级用户模式寄存器(Supervisor-Level Register, SLR)。

E500 内核有两种运行模式,即用户模式(User Mode)和超级用户模式(Supervisor Mode)。

PowerPC 处理器在用户模式或超级用户模式下可以访问用户模式寄存器ULR,而PowerPC处理器在超级用户模式下可以访问超级用户模式寄存器SLR。

用户可以通过修改E500内核的处理器状态寄存器MSR(Machine State Register)的PR 位进行用户模式和超级用户模式的切换。


Linux 系统使用E500内核提供的用户模式和超级用户模式。Linux 系统包含两类地址空间,核心空间和用户空间。 其中核心进程和在linux 核心中执行的用户进程运行在linux核心空间中,而用户进程大多数时间运行在linux用户空间中。

在Linux PowerPC 中,一个进程MSR寄存器的值存放在进程描述符中,当进程获得处理器资源后,再将这些存放在进程描述符中的寄存器写入到处理器对应的寄存器中。

Linux PowerPC 在创建新的用户进程时,必然要通过execve,而系统调用execve的执行顺序如下图:

接下来,看下./arch/powerpc/kernel/process.c 中,start_thread 对与MSR 寄存器的初始设置代码:

/*
 * Set up a thread for executing a new program
 */
void start_thread(struct pt_regs *regs, unsigned long start, unsigned long sp)
{
... ...
#ifdef CONFIG_PPC32
	regs->mq = 0;
	regs->nip = start;
	regs->msr = MSR_USER;
#else

ULR 寄存器组分为几类,主要包括 通用寄存器组GPR(General Purpose Register),指令状态寄存器组 IAR(Instruction Accessible Register),etc.

其中,通用寄存器组GPR 有32 个通用寄存器组成,GPR0~GPR31. LR(Link Register)隶属于 状态寄存器组 IAR。

SLR寄存器组主要 包括CPU 配置,内存管理,中断控制,SPR 寄存器等一系列寄存器。

在E500 内核中,主要使用两条指令操作这些寄存器,mtspr和mfspr 指令。

mtspr 指令用于对寄存器赋值,mfspr 用于对SLR 寄存器读取。

E500 内核对SLR 寄存器进行编址访问,如TBL 寄存器的地址为268, 而TBU 寄存器的地址为269, 在PowerPC 中使用spr268, spr269表示TBL 和TBU 寄存器。 E500内核使用mtspr 268, r3 指令对TBL 寄存器进行赋值,使用mfspr r3, 268 指令读取 TBL 寄存器。

MSR 寄存器不能使用mtslr, mfslr 进行赋值和读取,使用专门的指令mtmsr, mfmsr 进行赋值,读取。


总结一下PowerPC的指令集:

注意: PowerPC 使用的内存存储方式是大端模式,这个不同与ARM 处理器的小端模式。

通过readelf /bin/bash 这个可执行文件的elf 头信息可以获取到当前的处理器是大端模式还是小端模式。




PowerPC SC-Form 指令,sc 指令用于实现系统调用。

系统调用的方式由处理器架构决定,前些年做ARM 的时候是用swi 指令实现系统调用。

PowerPC 系统调用分析的不错的帖子:

http://blog.chinaunix.net/uid-24148050-id-344199.html

PowerPC 处理器没有专门的堆栈指针寄存器,而是使用r1 寄存器模拟堆栈指针寄存器。


E500 PowerPC 处理器的ABI:



E500 PowerPC 处理器的栈帧结构:





学习PowerPC linux 特别好的文档:

http://download.youkuaiyun.com/detail/chenqiang0721/5214796


http://www.cnblogs.com/autosar/archive/2010/03/16/1687635.html

PowerPC详细教程 PowerPC的嵌入式教程,内容详细、原语教程,是学习嵌入式、通信应用的难得的资料,800多页哦,值得一下。 立即下载

相关推荐

altium room 布局_ALtium 16相同重复模块PCB布局,复制布局走线

自己做了实际工程以后发现PCB器件名字后缀太长了,所以文章最后写了一下后缀的调整方法。第一种方法:1、建立子原理图如下,文件名CANM 2、之后新建一个顶层文件,文件名TOP,之后design—create sheet symbol form sheet or hdl。选择CANM,并放置到TOP中,如下 3、由于我们要多次调用CANM所以使用repeat命令修改如下: 4、之后根据自己的定义,连...

weixin_39609573的博客 5749

PowerPC构架应用程序二进制接口(ABI)及堆栈帧详解

PowerPC构架应用程序二进制接口(ABI)及堆栈帧详解

xianghui_zjj的专栏 1755

ADSP-21565的SigmaStudio图形化编程实战:从FW工程改造到音频通道打通

本文详细介绍了如何将ADSP-21569的SigmaStudio图形化编程固件工程改造,以适配ADSP-21565的纯片内SRAM内存架构。通过修改内存映射和链接文件,打通了音频输出通道,并成功利用SigmaStudio进行图形化编程,实现了从白噪声生成到音频输出的完整验证流程。

weixin_29169505的博客 380

PowerPC中的ABI及相关信息

ABI或EABI(Extend ABI)通常是处理器体系结构的一部分,它与平台是紧密相连的。我们可以把ABI理解为一套规则,这套规则一般包括定义了以下内容: 1:应用程序如何发出系统调用来trap到内核态。2:如何使用机器的寄存器。比如,RISC处理器的ABI就要规定用那个通用寄存器来作stack pointer和frame pointer。3:规定如何进行procedure call。 2,...

weixin_34307464的博客 396

UE 顶点动画工具 (VAT)

导入模型需要勾选全精度UV。

iesoxj的博客 1641

Materials Studio多层聚合物建模全流程:从Build Layers到LAMMPS data文件导出避坑指南

本文详细解析了使用Materials Studio构建多层聚合物模型并导出为LAMMPS data文件的全流程。重点剖析了Build Layers工具的核心逻辑、真空层处理技巧,并提供了解决导出过程中Z轴坐标偏移问题的实战方案,特别是如何利用msi2lmp工具的-shift参数进行精准校正,确保模型在LAMMPS中模拟的稳定性和准确性。

hhh00的博客 913

计算机系统:解析应用二进制接口(ABI)

ABI是操作系统和应用程序之间进行二进制级别交互所需遵守的一套规范。它定义了应用程序如何与操作系统进行通信,包括数据类型、寄存器用法、函数调用约定等等。通过遵循ABI,开发人员可以使他们的代码在不同的操作系统和体系结构之间移植。

m0_72410588的博客 1934

基于CNN的表情识别(FER)pytorch实现

Report for FER Jian Tang Abstract 我们使用卷积神经网络(CNN)实现了baby的面部表情识别(FER)。 数据上,我们获取了开源FER数据集FER2013[1],besides我们使用爬虫获取了baby相关的人脸图片,进行了手工分类标注以形成一个全新的baby FER数据集。 模型上,我们首先复现了Luan[2]的工作,即参考Kuo[3]在CVPR 2018上的工作并实现一个轻量的CNN网络,在FER2013上进行训练并得到了XXXX%的平均分类准确率(avg a

qq_20241587的博客 3683

开发PowerPC嵌入式应用二进制接口(EABI)应该遵循的原则

PowerPC嵌入式处理器应用笔记 开发PowerPC嵌入式应用二进制接口(EABI)应该遵循的原则 摘要-这份应用笔记描述了PowerPC的嵌入式应用二进制接口(Embedded Application BinaryInterface , EABI),主要是提供给将汇编语言和高级语言结合起来变成的软件开发者以及软件开发工具供应商。EABI是一个集合,包含了各种嵌入式应用和开发工具需要遵循的一

CODE and POEM 3087

因素空间与可拓学的互补性分析及问题处理融合模型

随着知识与信息数量的快速增长以及信息获取便利性的增加,企事业组织所面临的内外部环境更加复杂,业务问题呈现非线性、不确定性、多维化和实时交互性等特点。业务环境的高度不确定性和面临问题的开放性,人工智能与问题处理的深入研究迫切需要有一种自觉地为信息科学与智能科学服务的定性定量相结合的智能数学模型。经典数学适于描述物质世界的数量与空间关系,智能数学必须能描述信息拓展与智能机理。

weixin_70923796的博客 261

Agisoft Metashape 基于RTK技术的无人机航测免像控技术流程

利用无人机进行航空摄影测量,其使用方便、快速获得成果,已经是测绘行业外业生产的主要方式。RTK定位系统的出现,其厘米级的定位系统,使得航测无人机在作业时,能够准确获取拍照时的GPS位置,能够大量减少像控点,即使不使用像控点也能满足规范对精度的要求。可以有效解决特殊地形(如山川、峡谷、河流、沼泽、水库等)外业人员很难布设像控点的情况。

penglu366366的博客 2188

PPC指令集

一、存储/加载指令 1 整数存储指令 整数存储指令如表2所示。 表2 整数存储指令   名称 助记符 语法格式 字节存储(偏移地址寻址) stb rS, d(rA) 字节存储(寄存器寻址) stbx rS, r...

学海无涯 1万+

SAP ABAP Append structure 介绍

所有在 append structure 上增强的字段都是 append structure 的一部分,这意味着对这些增强所做的任何更改仅仅施加在 append structure 上,而不会影响被增强的 ABAP DDIC 结构。这同样适用于 transport. 激活数据库表或结构时,会找到所有关联的 append structure,并将它们的组件附加到数据库表或结构。Append structure(附加结构)是 ABAP 字典中附加到另一个结构或数据库表并将其组件附加到它们的结构。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 1165

(转载)AIX PowerPC体系结构及其溢出技术学习笔记

AIX PowerPC体系结构及其溢出技术学习笔记创建时间:2004-06-04文章属性:原创文章提交:san (san_at_xfocus.org)整理:san创建:2004-05-23一、熟悉PowerPC体系及其精简指令集计算PowerPC体系结构是RISC(精简指令集计算),定义了 200 多条指令。PowerPC 之所以是 RISC,原因在于大部分指令在一个单一的周期内执行,而且是定长的

Kendiv's Box 4028

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

Powerpc汇编编译学习笔记

Powerpc汇编编译学习笔记 Powerpc汇编编译学习笔记 本篇文章结合网上学习的部分知识,搭建对于Powerpc的编译环境。 1.准备 本人使用Fedora 33 64bit虚拟机。 核心Binutils用于对二进制文件进行处理 下载:https://ftp.gnu.org/gnu/binutils/ 说明doc: as使用:https://sourceware.org/binutils/docs/as/ https://sourceware.org/binutils/docs/binutils/in

EinsamMark的博客 2006

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

SPI模块学习笔记(PowerPC560系列)

新手上路,作为刚刚步入行业的新人,简单声明本文及之后的文章仅作为个人成长路上的学习笔记,如果各位大佬发现小弟哪里写的不对或者不清晰的地方,欢迎指正,万分感谢! 由于工作的需要,过去的时间里经常接触到SPI总线这个东西,自己也在网上学习了一些基础理论,大概了解了他的工作原理太深的原理不敢恭维,SPI,串行外围设备接口,是高速的全双工的通信总线。顾名思义,它常作为MCU与外设芯...

成续小拜 1265

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

PowerPC-MPC603e内核学习笔记之初步认识

PowerPC-MPC603e内核学习笔记之初步认识 PowerPC 603e内核有2.5v和3.5v两个版本。代号分别是PID7t-603e和PID6-603e。603e核心是低功耗的RISC PowerPC处理器,32位的PowerPC体系结构,提供了32位的有效地址,整数类型支持8,16和32位,还支持32位和64位的浮点数据类型。603e是一个超标量的处理器,能在每个时钟周期向

Jouson的专栏 3820

AIX PowerPC体系结构及其溢出技术学习笔记

创建时间:2004-06-04 文章属性:原创 文章提交:san (san_at_xfocus.org) 整理:san 创建:2004-05-23 一、熟悉PowerPC体系及其精简指令集计算 PowerPC体系结构是RISC(精简指令集计算),定义了 200 多条指令。PowerPC 之所以是 RISC,原因在于大部分指令在一个单一的周期内执行,而且是定长的32位指令,通常只执行一个单一的操作(

huangxb的笔记 2876

Linux on PowerPC 学习笔记(1)

<br />转自:http://www.cnblogs.com/autosar/archive/2010/03/16/1687635.html<br />1. 准备:<br />1.1. 资料收集<br />去freescale的网站上下载下面的几个pdf文件:<br />名称<br />内容<br />EREFRM.pdf<br />A Programmer's Reference Manual for Freescale Embedded Processors<br />E500CORE

918

powerpc资源

1、developerWorks Power Architecture 专区是了解有关 POWER 和 PowerPC 芯片及其相关技术的最佳资源。  http://www.ibm.com/developerworks/cn/power/  2、PowerPC体系结构学习笔记http://www.xfocus.net/articles/200406/711.html 3、《PowerPC 体系结构

surezcs的专栏 1239

PowerPC-MPC603e内核学习笔记之中断处理

PowerPC-MPC603e内核学习笔记之中断处理 当一个中断被响应的时候,下面是该中断的处理步骤:1.把中断的指令的地址存放到SRR0中。不同的中断类型会有所不同。2.SRR1的1-4 和 10-15位会被写入一些和中断有关的信息。3.MSR的16-23,25-27,和30-31位会被拷贝到SRR1寄存器中的相应位。4. 保存了MSR的值后,不同的中断会对MSR进行赋值

Jouson的专栏 2189

AIX PowerPC体系结构及其溢出技术学习笔记(转)

一、 熟悉PowerPC体系及其精简指令集计算PowerPC体系结构是RISC(精简指令集计算),定义了 200 多条指令。PowerPC 之所以是 RISC,原因在于大部分指令在一个单一的周期内执行,而且是定长的32位指令,通常只执行一个单一的操作(比如将内存加载到寄存器,或者将寄存器数据存储到内存)。差不多有12种指令格式,表现为5类主要的指令:1、分支(branch)指令2、定点(fixed

surezcs的专栏 1652
上一篇: ubuntu gcc/g++ 设置默认版本
下一篇: ubuntu 安装星际译王英汉词典
windtakers
博客等级 码龄17年 94粉丝 197原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值