/*

  • Copyright © 2015-2020, ARM Limited and Contributors. All rights reserved.
  • SPDX-License-Identifier: BSD-3-Clause
    */

#ifndef GIC_COMMON_H
#define GIC_COMMON_H

#include <lib/utils_def.h>

1-GIC Distributor接口通用定义

/*******************************************************************************

  • GIC Distributor interface general definitions
    *****************************************************************************/
    /
    Constants to categorise interrupts */
    #define MIN_SGI_ID U(0)
    #define MIN_SEC_SGI_ID U(8)
    #define MIN_PPI_ID U(16)
    #define MIN_SPI_ID U(32)
    #define MAX_SPI_ID U(1019)

#define TOTAL_SPI_INTR_NUM (MAX_SPI_ID - MIN_SPI_ID + U(1))
#define TOTAL_PCPU_INTR_NUM (MIN_SPI_ID - MIN_SGI_ID)

/* Mask for the priority field common to all GIC interfaces */
#define GIC_PRI_MASK U(0xff)

/* Mask for the configuration field common to all GIC interfaces */
#define GIC_CFG_MASK U(0x3)

/* Constant to indicate a spurious interrupt in all GIC versions */
#define GIC_SPURIOUS_INTERRUPT U(1023)

/* Interrupt configurations: 2-bit fields with LSB reserved */
#define GIC_INTR_CFG_LEVEL (0 << 1)
#define GIC_INTR_CFG_EDGE (1 << 1)

/* Highest possible interrupt priorities */
#define GIC_HIGHEST_SEC_PRIORITY U(0x00)
#define GIC_HIGHEST_NS_PRIORITY U(0x80)

1-通用GIC Distributor接口寄存器偏移

/*******************************************************************************

  • Common GIC Distributor interface register offsets
    ******************************************************************************/
    #define GICD_CTLR U(0x0)
    #define GICD_TYPER U(0x4)
    #define GICD_IIDR U(0x8)
    #define GICD_IGROUPR U(0x80)
    #define GICD_ISENABLER U(0x100)
    #define GICD_ICENABLER U(0x180)
    #define GICD_ISPENDR U(0x200)
    #define GICD_ICPENDR U(0x280)
    #define GICD_ISACTIVER U(0x300)
    #define GICD_ICACTIVER U(0x380)
    #define GICD_IPRIORITYR U(0x400)
    #define GICD_ICFGR U(0xc00)
    #define GICD_NSACR U(0xe00)

/* GICD_CTLR bit definitions */
#define CTLR_ENABLE_G0_SHIFT 0
#define CTLR_ENABLE_G0_MASK U(0x1)
#define CTLR_ENABLE_G0_BIT BIT_32(CTLR_ENABLE_G0_SHIFT)

2-通用GIC Distributor接口寄存器常量

/*******************************************************************************

  • Common GIC Distributor interface register constants
    ******************************************************************************/
    #define PIDR2_ARCH_REV_SHIFT 4
    #define PIDR2_ARCH_REV_MASK U(0xf)

/* GIC revision as reported by PIDR2.ArchRev register field */
#define ARCH_REV_GICV1 U(0x1)
#define ARCH_REV_GICV2 U(0x2)
#define ARCH_REV_GICV3 U(0x3)
#define ARCH_REV_GICV4 U(0x4)

#define IGROUPR_SHIFT 5
#define ISENABLER_SHIFT 5
#define ICENABLER_SHIFT ISENABLER_SHIFT
#define ISPENDR_SHIFT 5
#define ICPENDR_SHIFT ISPENDR_SHIFT
#define ISACTIVER_SHIFT 5
#define ICACTIVER_SHIFT ISACTIVER_SHIFT
#define IPRIORITYR_SHIFT 2
#define ITARGETSR_SHIFT 2
#define ICFGR_SHIFT 4
#define NSACR_SHIFT 4

/* GICD_TYPER shifts and masks */
#define TYPER_IT_LINES_NO_SHIFT U(0)
#define TYPER_IT_LINES_NO_MASK U(0x1f)

/* Value used to initialize Normal world interrupt priorities four at a time */
#define GICD_IPRIORITYR_DEF_VAL
(GIC_HIGHEST_NS_PRIORITY |
(GIC_HIGHEST_NS_PRIORITY << 8) |
(GIC_HIGHEST_NS_PRIORITY << 16) |
(GIC_HIGHEST_NS_PRIORITY << 24))

#endif /* GIC_COMMON_H */

ATF:Gicv源码文件系列-gic_common.h相关推荐

  1. ATF:Gicv源码文件系列-gicv2.h

    /* Copyright © 2015-2018, ARM Limited and Contributors. All rights reserved. SPDX-License-Identifier ...

  2. ATF:Gicv源码文件系列-gicdv2_helpers.c

    /* Copyright © 2015-2020, ARM Limited and Contributors. All rights reserved. SPDX-License-Identifier ...

  3. ATF:Gicv源码文件系列-gicv2.mk

    这个文件包含了gicv2的源码文件!!! #Copyright © 2020, Arm Limited. All rights reserved. #SPDX-License-Identifier: ...

  4. U-Boot 之三 U-Boot 源码文件解析及移植过程详解

      在之前的博文 Linux 之八 完整嵌入式 Linux 环境介绍及搭建说明 中我们说了要一步步搭建整个嵌入式 Linux 运行环境.我所使用的硬件平台及整个要搭建的嵌入式 Linux 环境见博文 ...

  5. Go 学习笔记(2)— 安装目录、工作区、源码文件和标准命令

    GOROOT: Go 语言安装根目录的路径,也就是 GO 语言的安装路径. GOPATH: 若干工作区目录的路径.是我们自己定义的工作空间.在 Go Module 模式之前非常重要,现在基本上用来存放 ...

  6. IntelliJ IDEA for Mac 如何配置项目模块的源代码根目录_源码文件的根目录

    按下组合键 Command + ; 打开[项目结构]配置窗口:然后选择左侧菜单栏的[Modules]:然后在右侧的模块列表中,选择你要配置的模块:接着选择右侧界面中的[Sources]标签. 首先添加 ...

  7. U-Boot 之零 源码文件、启动阶段(TPL、SPL)、FALCON、设备树

      最近,工作重心要从裸机开发转移到嵌入式 Linux 系统开发,在之前的博文 Linux 之八 完整嵌入式 Linux 环境.(交叉)编译工具链.CPU 体系架构.嵌入式系统构建工具 中详细介绍了嵌 ...

  8. 设置WebStorm查看本地源码文件个人修改的历史记录快捷键Alt+Shift+H、Ctrl+Shift+H(通常用于调试bug,发现文件出问题需要回溯到若干天之前)

    Alt+Shift+H 查看整个代码文件的修改历史记录 Ctrl+Shift+H 只查看被选中代码内容的修改历史记录(更具针对性)

  9. ATF:Gicv源码解读系列-gicv2_spis_configure_defaults

    1.gicv2_spis_configure_defaults 用来配置SPI的一些默认的属性,SPI中断 SPI:(shared peripheral interrupt),共享外设中断,该中断来源 ...

最新文章

  1. 微信小程序在showToast中换行并且隐藏icon
  2. 深度探索C++ 对象模型(5)-Initialization list(1)
  3. Linux系统\Centos没有网卡eth0配置文件怎么办?
  4. Zookeeper是什么?
  5. c语言预处理指令之 ##
  6. PL/SQL Developer下设置“长SQL自己主动换行”
  7. linux 文档属于apache,Apache 安装和使用文档
  8. java动态代理和cglib动态代理
  9. 手把手一起 图形化安装 k8s 集群
  10. JVM内存结构、垃圾回收那点事
  11. Ubuntu打包发布qt程序
  12. Autodesk cad卸载不干净导致的无法安装问题解决
  13. 【VScode实用生产力插件】
  14. 阿里云mysql空间不足_阿里云数据库MySQL系统文件导致实例空间满的解决办法
  15. python基础程序_Python基础初识
  16. 原来证件照还可以这样拍?美炸了!再也不怕证件照丑到家了!
  17. (四)Redis——搭建哨兵机制
  18. 乔布斯现身布道iPad 2 中国渠道商降价清库存
  19. 打开应用出现 “需要使用新应用一打开此ms-gamingoverlay链接”
  20. 如何在Mac上关闭应用程序?

热门文章

  1. 华硕关闭更新BIOS
  2. android弹出自定义layout菜单,Android:PopWindow — 对Android的底部弹窗、顶部弹窗菜单及自定义界面的使用封装...
  3. xcode更新一直失败的解决办法
  4. 从零实现Transformer、ChatGLM-6B、本地知识库、模型(训练/推理)加速
  5. 2019网络小说十大口碑神作盘点,诡秘剑来谍影覆汉牧神学霸皆在
  6. 手机端上传照片压缩功能canvas
  7. 手把手教你用深度学习做物体检测(四):模型使用
  8. 从C/C++到Python(之一)(By Robinvane Suen)
  9. 2人同步听歌软件_打包走!全网无损音乐任意下,支持4大主流音乐平台同步歌单!...
  10. 1000元如何让旧电脑升级改造?这些方案你得学会