mirror of
https://github.com/Atmosphere-NX/Atmosphere.git
synced 2025-06-06 09:31:16 -04:00
kern: save/restore spendsgir in KInterruptController::Save/RestoreCoreLocal
This commit is contained in:
parent
3fbc59cce1
commit
801438953d
2 changed files with 13 additions and 0 deletions
|
@ -116,6 +116,7 @@ namespace ams::kern::arch::arm {
|
||||||
u32 ipriorityr[NumLocalInterrupts / 4];
|
u32 ipriorityr[NumLocalInterrupts / 4];
|
||||||
u32 itargetsr[NumLocalInterrupts / 4];
|
u32 itargetsr[NumLocalInterrupts / 4];
|
||||||
u32 icfgr[NumLocalInterrupts / 16];
|
u32 icfgr[NumLocalInterrupts / 16];
|
||||||
|
u32 spendsgir[4];
|
||||||
};
|
};
|
||||||
|
|
||||||
struct GlobalState {
|
struct GlobalState {
|
||||||
|
|
|
@ -113,6 +113,12 @@ namespace ams::kern::arch::arm {
|
||||||
constexpr size_t Offset = 0;
|
constexpr size_t Offset = 0;
|
||||||
state->icfgr[i] = m_gicd->icfgr[i + Offset];
|
state->icfgr[i] = m_gicd->icfgr[i + Offset];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Save spendsgir. */
|
||||||
|
static_assert(util::size(state->spendsgir) == util::size(m_gicd->spendsgir));
|
||||||
|
for (size_t i = 0; i < util::size(state->spendsgir); ++i) {
|
||||||
|
state->spendsgir[i] = m_gicd->spendsgir[i];
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void KInterruptController::SaveGlobal(GlobalState *state) const {
|
void KInterruptController::SaveGlobal(GlobalState *state) const {
|
||||||
|
@ -168,6 +174,12 @@ namespace ams::kern::arch::arm {
|
||||||
m_gicd->icenabler[i + Offset] = 0xFFFFFFFF;
|
m_gicd->icenabler[i + Offset] = 0xFFFFFFFF;
|
||||||
m_gicd->isenabler[i + Offset] = state->isenabler[i];
|
m_gicd->isenabler[i + Offset] = state->isenabler[i];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Restore spendsgir. */
|
||||||
|
static_assert(util::size(state->spendsgir) == util::size(m_gicd->spendsgir));
|
||||||
|
for (size_t i = 0; i < util::size(state->spendsgir); ++i) {
|
||||||
|
m_gicd->spendsgir[i] = state->spendsgir[i];
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void KInterruptController::RestoreGlobal(const GlobalState *state) const {
|
void KInterruptController::RestoreGlobal(const GlobalState *state) const {
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue