mimxrt1062: simplify arm.AsmFull to arm.Asm

This means fewer instances of arm.AsmFull, which I'd like to remove
eventually if possible.
Этот коммит содержится в:
Ayke van Laethem 2022-04-20 14:19:06 +02:00 коммит произвёл Ron Evans
родитель 9160f3f16d
коммит 52233790cc

Просмотреть файл

@ -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)
} }
} }
} }