mimxrt1062: simplify arm.AsmFull to arm.Asm
This means fewer instances of arm.AsmFull, which I'd like to remove eventually if possible.
Этот коммит содержится в:
родитель
9160f3f16d
коммит
52233790cc
1 изменённых файлов: 21 добавлений и 47 удалений
|
@ -142,18 +142,14 @@ func (mpu *MPU_Type) Enable(enable bool) {
|
||||||
if enable {
|
if enable {
|
||||||
mpu.CTRL.Set(MPU_CTRL_PRIVDEFENA_Msk | MPU_CTRL_ENABLE_Msk)
|
mpu.CTRL.Set(MPU_CTRL_PRIVDEFENA_Msk | MPU_CTRL_ENABLE_Msk)
|
||||||
SystemControl.SHCSR.SetBits(SCB_SHCSR_MEMFAULTENA_Msk)
|
SystemControl.SHCSR.SetBits(SCB_SHCSR_MEMFAULTENA_Msk)
|
||||||
arm.AsmFull(`
|
arm.Asm("dsb 0xF")
|
||||||
dsb 0xF
|
arm.Asm("isb 0xF")
|
||||||
isb 0xF
|
|
||||||
`, nil)
|
|
||||||
enableDcache(true)
|
enableDcache(true)
|
||||||
enableIcache(true)
|
enableIcache(true)
|
||||||
} else {
|
} else {
|
||||||
enableIcache(false)
|
enableIcache(false)
|
||||||
enableDcache(false)
|
enableDcache(false)
|
||||||
arm.AsmFull(`
|
arm.Asm("dmb 0xF")
|
||||||
dmb 0xF
|
|
||||||
`, nil)
|
|
||||||
SystemControl.SHCSR.ClearBits(SCB_SHCSR_MEMFAULTENA_Msk)
|
SystemControl.SHCSR.ClearBits(SCB_SHCSR_MEMFAULTENA_Msk)
|
||||||
mpu.CTRL.ClearBits(MPU_CTRL_ENABLE_Msk)
|
mpu.CTRL.ClearBits(MPU_CTRL_ENABLE_Msk)
|
||||||
}
|
}
|
||||||
|
@ -188,31 +184,21 @@ func (mpu *MPU_Type) SetRASR(size RegionSize, access AccessPerms, ext Extension,
|
||||||
func enableIcache(enable bool) {
|
func enableIcache(enable bool) {
|
||||||
if enable != SystemControl.CCR.HasBits(SCB_CCR_IC_Msk) {
|
if enable != SystemControl.CCR.HasBits(SCB_CCR_IC_Msk) {
|
||||||
if enable {
|
if enable {
|
||||||
arm.AsmFull(`
|
arm.Asm("dsb 0xF")
|
||||||
dsb 0xF
|
arm.Asm("isb 0xF")
|
||||||
isb 0xF
|
|
||||||
`, nil)
|
|
||||||
SystemControl.ICIALLU.Set(0)
|
SystemControl.ICIALLU.Set(0)
|
||||||
arm.AsmFull(`
|
arm.Asm("dsb 0xF")
|
||||||
dsb 0xF
|
arm.Asm("isb 0xF")
|
||||||
isb 0xF
|
|
||||||
`, nil)
|
|
||||||
SystemControl.CCR.SetBits(SCB_CCR_IC_Msk)
|
SystemControl.CCR.SetBits(SCB_CCR_IC_Msk)
|
||||||
arm.AsmFull(`
|
arm.Asm("dsb 0xF")
|
||||||
dsb 0xF
|
arm.Asm("isb 0xF")
|
||||||
isb 0xF
|
|
||||||
`, nil)
|
|
||||||
} else {
|
} else {
|
||||||
arm.AsmFull(`
|
arm.Asm("dsb 0xF")
|
||||||
dsb 0xF
|
arm.Asm("isb 0xF")
|
||||||
isb 0xF
|
|
||||||
`, nil)
|
|
||||||
SystemControl.CCR.ClearBits(SCB_CCR_IC_Msk)
|
SystemControl.CCR.ClearBits(SCB_CCR_IC_Msk)
|
||||||
SystemControl.ICIALLU.Set(0)
|
SystemControl.ICIALLU.Set(0)
|
||||||
arm.AsmFull(`
|
arm.Asm("dsb 0xF")
|
||||||
dsb 0xF
|
arm.Asm("isb 0xF")
|
||||||
isb 0xF
|
|
||||||
`, nil)
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -227,9 +213,7 @@ func enableDcache(enable bool) {
|
||||||
if enable != SystemControl.CCR.HasBits(SCB_CCR_DC_Msk) {
|
if enable != SystemControl.CCR.HasBits(SCB_CCR_DC_Msk) {
|
||||||
if enable {
|
if enable {
|
||||||
SystemControl.CSSELR.Set(0)
|
SystemControl.CSSELR.Set(0)
|
||||||
arm.AsmFull(`
|
arm.Asm("dsb 0xF")
|
||||||
dsb 0xF
|
|
||||||
`, nil)
|
|
||||||
ccsidr := SystemControl.CCSIDR.Get()
|
ccsidr := SystemControl.CCSIDR.Get()
|
||||||
sets := (ccsidr & SCB_CCSIDR_NUMSETS_Msk) >> SCB_CCSIDR_NUMSETS_Pos
|
sets := (ccsidr & SCB_CCSIDR_NUMSETS_Msk) >> SCB_CCSIDR_NUMSETS_Pos
|
||||||
for sets != 0 {
|
for sets != 0 {
|
||||||
|
@ -242,23 +226,15 @@ func enableDcache(enable bool) {
|
||||||
}
|
}
|
||||||
sets--
|
sets--
|
||||||
}
|
}
|
||||||
arm.AsmFull(`
|
arm.Asm("dsb 0xF")
|
||||||
dsb 0xF
|
|
||||||
`, nil)
|
|
||||||
SystemControl.CCR.SetBits(SCB_CCR_DC_Msk)
|
SystemControl.CCR.SetBits(SCB_CCR_DC_Msk)
|
||||||
arm.AsmFull(`
|
arm.Asm("dsb 0xF")
|
||||||
dsb 0xF
|
arm.Asm("isb 0xF")
|
||||||
isb 0xF
|
|
||||||
`, nil)
|
|
||||||
} else {
|
} else {
|
||||||
SystemControl.CSSELR.Set(0)
|
SystemControl.CSSELR.Set(0)
|
||||||
arm.AsmFull(`
|
arm.Asm("dsb 0xF")
|
||||||
dsb 0xF
|
|
||||||
`, nil)
|
|
||||||
SystemControl.CCR.ClearBits(SCB_CCR_DC_Msk)
|
SystemControl.CCR.ClearBits(SCB_CCR_DC_Msk)
|
||||||
arm.AsmFull(`
|
arm.Asm("dsb 0xF")
|
||||||
dsb 0xF
|
|
||||||
`, nil)
|
|
||||||
dcacheCcsidr.Set(SystemControl.CCSIDR.Get())
|
dcacheCcsidr.Set(SystemControl.CCSIDR.Get())
|
||||||
dcacheSets.Set((dcacheCcsidr.Get() & SCB_CCSIDR_NUMSETS_Msk) >> SCB_CCSIDR_NUMSETS_Pos)
|
dcacheSets.Set((dcacheCcsidr.Get() & SCB_CCSIDR_NUMSETS_Msk) >> SCB_CCSIDR_NUMSETS_Pos)
|
||||||
for dcacheSets.Get() != 0 {
|
for dcacheSets.Get() != 0 {
|
||||||
|
@ -271,10 +247,8 @@ func enableDcache(enable bool) {
|
||||||
}
|
}
|
||||||
dcacheSets.Set(dcacheSets.Get() - 1)
|
dcacheSets.Set(dcacheSets.Get() - 1)
|
||||||
}
|
}
|
||||||
arm.AsmFull(`
|
arm.Asm("dsb 0xF")
|
||||||
dsb 0xF
|
arm.Asm("isb 0xF")
|
||||||
isb 0xF
|
|
||||||
`, nil)
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Загрузка…
Создание таблицы
Сослаться в новой задаче