Page MenuHomeFreeBSD

arm: Clear TTBCR before enabling the MMU
ClosedPublic

Authored by markj on Aug 4 2022, 1:36 PM.
Tags
None
Referenced Files
Unknown Object (File)
Fri, Oct 31, 7:51 PM
Unknown Object (File)
Fri, Oct 31, 4:49 AM
Unknown Object (File)
Wed, Oct 29, 10:34 AM
Unknown Object (File)
Wed, Oct 29, 5:31 AM
Unknown Object (File)
Wed, Oct 29, 2:09 AM
Unknown Object (File)
Wed, Oct 29, 2:08 AM
Unknown Object (File)
Mon, Oct 27, 8:02 AM
Unknown Object (File)
Mon, Oct 27, 5:53 AM
Subscribers

Details

Summary

Upon reset, this register is supposed to have a value of zero. But when
booting certain v7 CPUs in QEMU, we enter the kernel with several bits
set, including the EAE bit, which enables ARM's PAE extension. I'm not
sure if QEMU is setting, or the uboot loader. Because we don't
implement that extension and use regular 32-bit page tables, the kernel
hangs after enabling the MMU.

Just clear everything in TTBCR before enabling the MMU. FreeBSD doesn't
toggle anything in that register, and a look through the flag
definitions suggests that setting everything to zero is what we want.

PR: 251187

Diff Detail

Repository
rS FreeBSD src repository - subversion
Lint
Lint Passed
Unit
No Test Coverage
Build Status
Buildable 46745
Build 43634: arc lint + arc unit