SimpleKernel 1.17.0
Loading...
Searching...
No Matches
Gic::Gicr Class Reference

GIC Redistributor 接口 More...

#include <gic.h>

Collaboration diagram for Gic::Gicr:
Collaboration graph

Public Member Functions

auto Enable (uint32_t intid, uint32_t cpuid) const -> void
 允许从 redistributor 转发到 CPU interface
 
auto Disable (uint32_t intid, uint32_t cpuid) const -> void
 禁止从 redistributor 转发到 CPU interface
 
auto Clear (uint32_t intid, uint32_t cpuid) const -> void
 清除指定 cpu intid 的中断
 
auto SetPrio (uint32_t intid, uint32_t cpuid, uint32_t prio) const -> void
 设置 intid 的优先级
 
auto SetUp () const -> void
 初始化 gicr,在多核场景使用
 
auto SetupPpi (uint32_t intid, uint32_t cpuid) const -> void
 设置指定 PPI 中断 PPI: private peripheral interrupt, 私有外设中断,该中断来源于外设,但是该中断只对指定的 core 有效
 
auto SetupSgi (uint32_t intid, uint32_t cpuid) const -> void
 设置指定 SGI 中断 SGI: Software Generated Interrupt, 软件生成中断,用于处理器间通信
 
构造/析构函数
 Gicr (uint64_t _base_addr)
 构造函数
 
 Gicr ()=default
 
 Gicr (const Gicr &)=delete
 
 Gicr (Gicr &&)=delete
 
auto operator= (const Gicr &) -> Gicr &=delete
 
auto operator= (Gicr &&) -> Gicr &=default
 
 ~Gicr ()=default
 

Private Member Functions

__always_inline auto Ipriorityrn (uint64_t n) const -> uint64_t
 计算 IPRIORITYR 寄存器偏移
 
__always_inline auto Read (uint32_t cpuid, uint32_t off) const -> uint32_t
 
__always_inline auto Write (uint32_t cpuid, uint32_t off, uint32_t val) const -> void
 

Private Attributes

uint64_t base_addr_ {0}
 GICR 基地址
 

Static Private Attributes

static constexpr uint32_t kStride = 0x20000
 每个 GICR 长度 2 * 64 * 1024
 
static constexpr uint32_t kCtlr = 0x0000
 
static constexpr uint32_t kIidr = 0x0004
 Redistributor Implementation Identification Register, RO.
 
static constexpr uint32_t kTyper = 0x0008
 Redistributor Type Register, RO.
 
static constexpr uint32_t kWaker = 0x0014
 
static constexpr uint32_t kWakerProcessorSleepMask = 2
 
static constexpr uint32_t kWakerChildrenAsleepMask = 4
 
static constexpr uint32_t kFctlr = 0x0020
 Function Control Register, RW.
 
static constexpr uint32_t kPwrr = 0x0024
 Power Register, RW.
 
static constexpr uint32_t kClassr = 0x0028
 Class Register, RW.
 
static constexpr uint32_t kPropbaser = 0x0070
 Redistributor Properties Base Address Register, RW.
 
static constexpr uint32_t kPendbaser = 0x0078
 Redistributor LPI Pending Table Base Address Register, RW.
 
static constexpr uint32_t kPidr4 = 0xFFD0
 Peripheral ID 4 Register, RO.
 
static constexpr uint32_t kPidr5 = 0xFFD4
 Peripheral ID 5 Register, RO.
 
static constexpr uint32_t kPidr6 = 0xFFD8
 Peripheral ID 6 Register, RO.
 
static constexpr uint32_t kPidr7 = 0xFFDC
 Peripheral ID 7 Register, RO.
 
static constexpr uint32_t kPidr0 = 0xFFE0
 Peripheral ID 0 Register, RO.
 
static constexpr uint32_t kPidr1 = 0xFFE4
 Peripheral ID 1 Register, RO.
 
static constexpr uint32_t kPidr2 = 0xFFE8
 Peripheral ID 2 Register, RO.
 
static constexpr uint32_t kPidr3 = 0xFFEC
 Peripheral ID 3 Register, RO.
 
static constexpr uint32_t kCidr0 = 0xFFF0
 Component ID 0 Register, RO.
 
static constexpr uint32_t kCidr1 = 0xFFF4
 Component ID 1 Register, RO.
 
static constexpr uint32_t kCidr2 = 0xFFF8
 Component ID 2 Register, RO.
 
static constexpr uint32_t kCidr3 = 0xFFFC
 Component ID 3 Register, RO.
 
static constexpr uint32_t kSgiBase = 0x10000
 SGI 基地址 64 * 1024.
 
static constexpr uint32_t kIgroupr0 = kSgiBase + 0x0080
 
static constexpr uint32_t kIgroupr0Clear = 0
 
static constexpr uint32_t kIgroupr0Set = UINT32_MAX
 
static constexpr uint32_t kIsEnabler0 = kSgiBase + 0x0100
 
static constexpr uint32_t kIsEnabler0Size = 32
 
static constexpr uint32_t kIcEnabler0 = kSgiBase + 0x0180
 
static constexpr uint32_t kIcEnabler0Size = 32
 
static constexpr uint32_t kIsPendr0 = kSgiBase + 0x0200
 Interrupt Set-Pending Register, RW.
 
static constexpr uint32_t kIcPendr0 = kSgiBase + 0x0280
 
static constexpr uint32_t kIcPendr0Size = 32
 
static constexpr uint32_t kIsActiver0 = kSgiBase + 0x0300
 Interrupt Set-Active Register, RW.
 
static constexpr uint32_t kIcActiver0 = kSgiBase + 0x0380
 Interrupt Clear-Active Register, RW.
 
static constexpr uint32_t kIpriorityrn = kSgiBase + 0x0400
 
static constexpr uint32_t kIpriorityrnSize = 4
 
static constexpr uint32_t kIpriorityrnBits = 8
 
static constexpr uint32_t kIpriorityrnBitsMask = 0xFF
 
static constexpr uint32_t kIcfgrn = 0x0C00
 Interrupt Configuration Registers, RW.
 
static constexpr uint32_t kIgrpmodr0 = 0x0D00
 
static constexpr uint32_t kIgrpmodr0Clear = 0
 
static constexpr uint32_t kIgrpmodr0Set = UINT32_MAX
 
static constexpr uint32_t kNsacr = 0x0E00
 Non-secure Access Control Register, RW.
 
static constexpr uint32_t kMiscstatusr = 0xC000
 Miscellaneous Status Register, RO.
 
static constexpr uint32_t kIerrvr = 0xC008
 Interrupt Error Valid Register, RW.
 
static constexpr uint32_t kSgidr = 0xC010
 SGI Default Register, RW.
 
static constexpr uint32_t kCfgid0 = 0xF000
 Configuration ID0 Register, RO.
 
static constexpr uint32_t kCfgid1 = 0xF004
 Configuration ID1 Register, RO.
 

Detailed Description

GIC Redistributor 接口

Definition at line 410 of file gic.h.

Constructor & Destructor Documentation

◆ Gicr() [1/4]

Gic::Gicr::Gicr ( uint64_t  _base_addr)
explicit

构造函数

Parameters
_base_addrGICR 基地址

Definition at line 152 of file gic.cpp.

152 : base_addr_(_base_addr) {
153 assert(base_addr_ != 0 && "GICR base address is invalid");
154
155 auto cpuid = cpu_io::GetCurrentCoreId();
156
157 // 将 GICR_CTLR 清零
158 Write(cpuid, kCtlr, 0);
159
160 // The System register interface for the current Security state is enabled.
161 cpu_io::ICC_SRE_EL1::SRE::Set();
162
163 // 允许 Non-secure Group 1 中断
166
167 // 唤醒 Redistributor
168 // @see
169 // https://developer.arm.com/documentation/ddi0601/2024-12/External-Registers/GICR-WAKER--Redistributor-Wake-Register?lang=en
170 auto waker = Read(cpuid, kWaker);
171 // Clear the ProcessorSleep bit
172 Write(cpuid, kWaker, waker & ~kWakerProcessorSleepMask);
173 // 等待唤醒完成
174 while (Read(cpuid, kWaker) & kWakerChildrenAsleepMask) {
176 }
177}
static constexpr uint32_t kIgrpmodr0
Definition gic.h:594
static constexpr uint32_t kCtlr
Definition gic.h:487
static constexpr uint32_t kIgroupr0
Definition gic.h:541
uint64_t base_addr_
GICR 基地址
Definition gic.h:616
static constexpr uint32_t kWaker
Definition gic.h:496
static constexpr uint32_t kIgroupr0Set
Definition gic.h:543
__always_inline auto Write(uint32_t cpuid, uint32_t off, uint32_t val) const -> void
Definition gic.h:625
static constexpr uint32_t kIgrpmodr0Clear
Definition gic.h:599
__always_inline auto Read(uint32_t cpuid, uint32_t off) const -> uint32_t
Definition gic.h:618
static constexpr uint32_t kWakerChildrenAsleepMask
Definition gic.h:498
static constexpr uint32_t kWakerProcessorSleepMask
Definition gic.h:497
auto GetCurrentCoreId() -> size_t
Definition cpu_io.h:26
void Pause()
Definition cpu_io.h:20
Here is the call graph for this function:

◆ Gicr() [2/4]

Gic::Gicr::Gicr ( )
default

◆ Gicr() [3/4]

Gic::Gicr::Gicr ( const Gicr )
delete

◆ Gicr() [4/4]

Gic::Gicr::Gicr ( Gicr &&  )
delete

◆ ~Gicr()

Gic::Gicr::~Gicr ( )
default

Member Function Documentation

◆ Clear()

auto Gic::Gicr::Clear ( uint32_t  intid,
uint32_t  cpuid 
) const -> void

清除指定 cpu intid 的中断

Parameters
intid中断号
cpuidcpu 编号

Definition at line 191 of file gic.cpp.

191 {
192 auto ic = Read(cpuid, kIcPendr0);
193 ic |= 1 << (intid % kIcPendr0Size);
194 Write(cpuid, kIcPendr0, ic);
195}
static constexpr uint32_t kIcPendr0Size
Definition gic.h:564
static constexpr uint32_t kIcPendr0
Definition gic.h:563

◆ Disable()

auto Gic::Gicr::Disable ( uint32_t  intid,
uint32_t  cpuid 
) const -> void

禁止从 redistributor 转发到 CPU interface

Parameters
intid中断号
cpuidcpu 编号

Definition at line 185 of file gic.cpp.

185 {
186 auto ic = Read(cpuid, kIcEnabler0);
187 ic |= 1 << (intid % kIcEnabler0Size);
188 Write(cpuid, kIcEnabler0, ic);
189}
static constexpr uint32_t kIcEnabler0Size
Definition gic.h:555
static constexpr uint32_t kIcEnabler0
Definition gic.h:554

◆ Enable()

auto Gic::Gicr::Enable ( uint32_t  intid,
uint32_t  cpuid 
) const -> void

允许从 redistributor 转发到 CPU interface

Parameters
intid中断号
cpuidcpu 编号

Definition at line 179 of file gic.cpp.

179 {
180 auto is = Read(cpuid, kIsEnabler0);
181 is |= 1 << (intid % kIsEnabler0Size);
182 Write(cpuid, kIsEnabler0, is);
183}
static constexpr uint32_t kIsEnabler0
Definition gic.h:548
static constexpr uint32_t kIsEnabler0Size
Definition gic.h:549

◆ Ipriorityrn()

__always_inline auto Gic::Gicr::Ipriorityrn ( uint64_t  n) const -> uint64_t
inlineprivate

计算 IPRIORITYR 寄存器偏移

Parameters
n寄存器索引
Returns
uint64_t 寄存器偏移地址

Definition at line 583 of file gic.h.

584 {
585 return kIpriorityrn + n * 4;
586 }
static constexpr uint32_t kIpriorityrn
Definition gic.h:573

◆ operator=() [1/2]

auto Gic::Gicr::operator= ( const Gicr ) -> Gicr &=delete
delete

◆ operator=() [2/2]

auto Gic::Gicr::operator= ( Gicr &&  ) -> Gicr &=default
default

◆ Read()

__always_inline auto Gic::Gicr::Read ( uint32_t  cpuid,
uint32_t  off 
) const -> uint32_t
inlineprivate

Definition at line 618 of file gic.h.

619 {
620 etl::io_port_ro<uint32_t> reg{
621 reinterpret_cast<void*>(base_addr_ + cpuid * kStride + off)};
622 return reg.read();
623 }
static constexpr uint32_t kStride
每个 GICR 长度 2 * 64 * 1024
Definition gic.h:482
Here is the caller graph for this function:

◆ SetPrio()

auto Gic::Gicr::SetPrio ( uint32_t  intid,
uint32_t  cpuid,
uint32_t  prio 
) const -> void

设置 intid 的优先级

Parameters
intid中断号
cpuidcpu 编号
prio优先级

Definition at line 197 of file gic.cpp.

198 {
199 auto shift = (intid % kIpriorityrnSize) * kIpriorityrnBits;
200 auto ip = Read(cpuid, Ipriorityrn(intid / kIpriorityrnSize));
201 ip &= ~(kIpriorityrnBitsMask << shift);
202 ip |= prio << shift;
203 Write(cpuid, Ipriorityrn(intid / kIpriorityrnSize), ip);
204}
__always_inline auto Ipriorityrn(uint64_t n) const -> uint64_t
计算 IPRIORITYR 寄存器偏移
Definition gic.h:583
static constexpr uint32_t kIpriorityrnSize
Definition gic.h:574
static constexpr uint32_t kIpriorityrnBitsMask
Definition gic.h:576
static constexpr uint32_t kIpriorityrnBits
Definition gic.h:575

◆ SetUp()

auto Gic::Gicr::SetUp ( ) const -> void

初始化 gicr,在多核场景使用

Definition at line 112 of file gic.cpp.

112 {
113 auto cpuid = cpu_io::GetCurrentCoreId();
114
115 // 将 GICR_CTLR 清零
116 Write(cpuid, kCtlr, 0);
117
118 // The System register interface for the current Security state is enabled.
119 cpu_io::ICC_SRE_EL1::SRE::Set();
120
121 // 允许 Non-secure Group 1 中断
124
125 // 唤醒 Redistributor
126 // @see
127 // https://developer.arm.com/documentation/ddi0601/2024-12/External-Registers/GICR-WAKER--Redistributor-Wake-Register?lang=en
128 auto waker = Read(cpuid, kWaker);
129 // Clear the ProcessorSleep bit
130 Write(cpuid, kWaker, waker & ~kWakerProcessorSleepMask);
131 // 等待唤醒完成
132 while (Read(cpuid, kWaker) & kWakerChildrenAsleepMask) {
134 }
135}
Here is the call graph for this function:
Here is the caller graph for this function:

◆ SetupPpi()

auto Gic::Gicr::SetupPpi ( uint32_t  intid,
uint32_t  cpuid 
) const -> void

设置指定 PPI 中断 PPI: private peripheral interrupt, 私有外设中断,该中断来源于外设,但是该中断只对指定的 core 有效

Parameters
intid中断号
cpuidcpu 编号

Definition at line 206 of file gic.cpp.

206 {
207 SetPrio(intid, cpuid, 0);
208 Clear(intid, cpuid);
209 Enable(intid, cpuid);
210}
auto SetPrio(uint32_t intid, uint32_t cpuid, uint32_t prio) const -> void
设置 intid 的优先级
Definition gic.cpp:197
auto Enable(uint32_t intid, uint32_t cpuid) const -> void
允许从 redistributor 转发到 CPU interface
Definition gic.cpp:179
auto Clear(uint32_t intid, uint32_t cpuid) const -> void
清除指定 cpu intid 的中断
Definition gic.cpp:191

◆ SetupSgi()

auto Gic::Gicr::SetupSgi ( uint32_t  intid,
uint32_t  cpuid 
) const -> void

设置指定 SGI 中断 SGI: Software Generated Interrupt, 软件生成中断,用于处理器间通信

Parameters
intid中断号 (0-15)
cpuidcpu 编号

Definition at line 212 of file gic.cpp.

212 {
213 SetPrio(intid, cpuid, 0);
214 Clear(intid, cpuid);
215 Enable(intid, cpuid);
216}

◆ Write()

__always_inline auto Gic::Gicr::Write ( uint32_t  cpuid,
uint32_t  off,
uint32_t  val 
) const -> void
inlineprivate

Definition at line 625 of file gic.h.

626 {
627 etl::io_port_wo<uint32_t> reg{
628 reinterpret_cast<void*>(base_addr_ + cpuid * kStride + off)};
629 reg.write(val);
630 }
Here is the caller graph for this function:

Member Data Documentation

◆ base_addr_

uint64_t Gic::Gicr::base_addr_ {0}
private

GICR 基地址

Definition at line 616 of file gic.h.

616{0};

◆ kCfgid0

constexpr uint32_t Gic::Gicr::kCfgid0 = 0xF000
staticconstexprprivate

Configuration ID0 Register, RO.

Definition at line 611 of file gic.h.

◆ kCfgid1

constexpr uint32_t Gic::Gicr::kCfgid1 = 0xF004
staticconstexprprivate

Configuration ID1 Register, RO.

Definition at line 613 of file gic.h.

◆ kCidr0

constexpr uint32_t Gic::Gicr::kCidr0 = 0xFFF0
staticconstexprprivate

Component ID 0 Register, RO.

Definition at line 527 of file gic.h.

◆ kCidr1

constexpr uint32_t Gic::Gicr::kCidr1 = 0xFFF4
staticconstexprprivate

Component ID 1 Register, RO.

Definition at line 529 of file gic.h.

◆ kCidr2

constexpr uint32_t Gic::Gicr::kCidr2 = 0xFFF8
staticconstexprprivate

Component ID 2 Register, RO.

Definition at line 531 of file gic.h.

◆ kCidr3

constexpr uint32_t Gic::Gicr::kCidr3 = 0xFFFC
staticconstexprprivate

Component ID 3 Register, RO.

Definition at line 533 of file gic.h.

◆ kClassr

constexpr uint32_t Gic::Gicr::kClassr = 0x0028
staticconstexprprivate

Class Register, RW.

Definition at line 505 of file gic.h.

◆ kCtlr

constexpr uint32_t Gic::Gicr::kCtlr = 0x0000
staticconstexprprivate

◆ kFctlr

constexpr uint32_t Gic::Gicr::kFctlr = 0x0020
staticconstexprprivate

Function Control Register, RW.

Definition at line 501 of file gic.h.

◆ kIcActiver0

constexpr uint32_t Gic::Gicr::kIcActiver0 = kSgiBase + 0x0380
staticconstexprprivate

Interrupt Clear-Active Register, RW.

Definition at line 569 of file gic.h.

◆ kIcEnabler0

constexpr uint32_t Gic::Gicr::kIcEnabler0 = kSgiBase + 0x0180
staticconstexprprivate

◆ kIcEnabler0Size

constexpr uint32_t Gic::Gicr::kIcEnabler0Size = 32
staticconstexprprivate

Definition at line 555 of file gic.h.

◆ kIcfgrn

constexpr uint32_t Gic::Gicr::kIcfgrn = 0x0C00
staticconstexprprivate

Interrupt Configuration Registers, RW.

Definition at line 589 of file gic.h.

◆ kIcPendr0

constexpr uint32_t Gic::Gicr::kIcPendr0 = kSgiBase + 0x0280
staticconstexprprivate

◆ kIcPendr0Size

constexpr uint32_t Gic::Gicr::kIcPendr0Size = 32
staticconstexprprivate

Definition at line 564 of file gic.h.

◆ kIerrvr

constexpr uint32_t Gic::Gicr::kIerrvr = 0xC008
staticconstexprprivate

Interrupt Error Valid Register, RW.

Definition at line 607 of file gic.h.

◆ kIgroupr0

constexpr uint32_t Gic::Gicr::kIgroupr0 = kSgiBase + 0x0080
staticconstexprprivate

◆ kIgroupr0Clear

constexpr uint32_t Gic::Gicr::kIgroupr0Clear = 0
staticconstexprprivate

Definition at line 542 of file gic.h.

◆ kIgroupr0Set

constexpr uint32_t Gic::Gicr::kIgroupr0Set = UINT32_MAX
staticconstexprprivate

Definition at line 543 of file gic.h.

◆ kIgrpmodr0

constexpr uint32_t Gic::Gicr::kIgrpmodr0 = 0x0D00
staticconstexprprivate

◆ kIgrpmodr0Clear

constexpr uint32_t Gic::Gicr::kIgrpmodr0Clear = 0
staticconstexprprivate

Definition at line 599 of file gic.h.

◆ kIgrpmodr0Set

constexpr uint32_t Gic::Gicr::kIgrpmodr0Set = UINT32_MAX
staticconstexprprivate

Definition at line 600 of file gic.h.

◆ kIidr

constexpr uint32_t Gic::Gicr::kIidr = 0x0004
staticconstexprprivate

Redistributor Implementation Identification Register, RO.

Definition at line 489 of file gic.h.

◆ kIpriorityrn

constexpr uint32_t Gic::Gicr::kIpriorityrn = kSgiBase + 0x0400
staticconstexprprivate

◆ kIpriorityrnBits

constexpr uint32_t Gic::Gicr::kIpriorityrnBits = 8
staticconstexprprivate

Definition at line 575 of file gic.h.

◆ kIpriorityrnBitsMask

constexpr uint32_t Gic::Gicr::kIpriorityrnBitsMask = 0xFF
staticconstexprprivate

Definition at line 576 of file gic.h.

◆ kIpriorityrnSize

constexpr uint32_t Gic::Gicr::kIpriorityrnSize = 4
staticconstexprprivate

Definition at line 574 of file gic.h.

◆ kIsActiver0

constexpr uint32_t Gic::Gicr::kIsActiver0 = kSgiBase + 0x0300
staticconstexprprivate

Interrupt Set-Active Register, RW.

Definition at line 567 of file gic.h.

◆ kIsEnabler0

constexpr uint32_t Gic::Gicr::kIsEnabler0 = kSgiBase + 0x0100
staticconstexprprivate

◆ kIsEnabler0Size

constexpr uint32_t Gic::Gicr::kIsEnabler0Size = 32
staticconstexprprivate

Definition at line 549 of file gic.h.

◆ kIsPendr0

constexpr uint32_t Gic::Gicr::kIsPendr0 = kSgiBase + 0x0200
staticconstexprprivate

Interrupt Set-Pending Register, RW.

Definition at line 558 of file gic.h.

◆ kMiscstatusr

constexpr uint32_t Gic::Gicr::kMiscstatusr = 0xC000
staticconstexprprivate

Miscellaneous Status Register, RO.

Definition at line 605 of file gic.h.

◆ kNsacr

constexpr uint32_t Gic::Gicr::kNsacr = 0x0E00
staticconstexprprivate

Non-secure Access Control Register, RW.

Definition at line 603 of file gic.h.

◆ kPendbaser

constexpr uint32_t Gic::Gicr::kPendbaser = 0x0078
staticconstexprprivate

Redistributor LPI Pending Table Base Address Register, RW.

Definition at line 509 of file gic.h.

◆ kPidr0

constexpr uint32_t Gic::Gicr::kPidr0 = 0xFFE0
staticconstexprprivate

Peripheral ID 0 Register, RO.

Definition at line 519 of file gic.h.

◆ kPidr1

constexpr uint32_t Gic::Gicr::kPidr1 = 0xFFE4
staticconstexprprivate

Peripheral ID 1 Register, RO.

Definition at line 521 of file gic.h.

◆ kPidr2

constexpr uint32_t Gic::Gicr::kPidr2 = 0xFFE8
staticconstexprprivate

Peripheral ID 2 Register, RO.

Definition at line 523 of file gic.h.

◆ kPidr3

constexpr uint32_t Gic::Gicr::kPidr3 = 0xFFEC
staticconstexprprivate

Peripheral ID 3 Register, RO.

Definition at line 525 of file gic.h.

◆ kPidr4

constexpr uint32_t Gic::Gicr::kPidr4 = 0xFFD0
staticconstexprprivate

Peripheral ID 4 Register, RO.

Definition at line 511 of file gic.h.

◆ kPidr5

constexpr uint32_t Gic::Gicr::kPidr5 = 0xFFD4
staticconstexprprivate

Peripheral ID 5 Register, RO.

Definition at line 513 of file gic.h.

◆ kPidr6

constexpr uint32_t Gic::Gicr::kPidr6 = 0xFFD8
staticconstexprprivate

Peripheral ID 6 Register, RO.

Definition at line 515 of file gic.h.

◆ kPidr7

constexpr uint32_t Gic::Gicr::kPidr7 = 0xFFDC
staticconstexprprivate

Peripheral ID 7 Register, RO.

Definition at line 517 of file gic.h.

◆ kPropbaser

constexpr uint32_t Gic::Gicr::kPropbaser = 0x0070
staticconstexprprivate

Redistributor Properties Base Address Register, RW.

Definition at line 507 of file gic.h.

◆ kPwrr

constexpr uint32_t Gic::Gicr::kPwrr = 0x0024
staticconstexprprivate

Power Register, RW.

Definition at line 503 of file gic.h.

◆ kSgiBase

constexpr uint32_t Gic::Gicr::kSgiBase = 0x10000
staticconstexprprivate

SGI 基地址 64 * 1024.

Definition at line 536 of file gic.h.

◆ kSgidr

constexpr uint32_t Gic::Gicr::kSgidr = 0xC010
staticconstexprprivate

SGI Default Register, RW.

Definition at line 609 of file gic.h.

◆ kStride

constexpr uint32_t Gic::Gicr::kStride = 0x20000
staticconstexprprivate

每个 GICR 长度 2 * 64 * 1024

Definition at line 482 of file gic.h.

◆ kTyper

constexpr uint32_t Gic::Gicr::kTyper = 0x0008
staticconstexprprivate

Redistributor Type Register, RO.

Definition at line 491 of file gic.h.

◆ kWaker

constexpr uint32_t Gic::Gicr::kWaker = 0x0014
staticconstexprprivate

◆ kWakerChildrenAsleepMask

constexpr uint32_t Gic::Gicr::kWakerChildrenAsleepMask = 4
staticconstexprprivate

Definition at line 498 of file gic.h.

◆ kWakerProcessorSleepMask

constexpr uint32_t Gic::Gicr::kWakerProcessorSleepMask = 2
staticconstexprprivate

Definition at line 497 of file gic.h.


The documentation for this class was generated from the following files: