Enabling MMU in Linux

Go To StackoverFlow.com


  1. In ARM Linux , at exactly which point mmu is enabled. ie , in which file (assembly file or paging_init() in arch/arm/kernel/setup.c)

  2. Does ARM linux have support to run without paging.

Thanks in advance.

2012-04-03 20:15
by Prabagaran


Have a look at this(dead) and this pages on ARM Linux booting process. They're probably somewhat out of date but should be pretty close.

  1. MMU gets enabled in arch/arm/kernel/head.S, in __enable_mmu function.
  2. You can even run without MMU at all; uCLinux project has been merged into mainline a couple years ago.
2012-04-04 12:31
by Igor Skochinsky
Links are dead :( - pevik 2018-11-13 13:44
@pevik thanks, found a copy of the second one; for the first you can use archive.or - Igor Skochinsky 2018-11-14 08:07


Actually if you are working on embedded system using Linux on ARM systems, then generally in the bootloader there is no MMU and when bootloader switches to Kernel then in arch/arm/boot/compressed/head.S, we set up MMU in __setup_mmu function.

First page tables are created which are used for page translation and then we start with MMU setup.

2014-09-26 23:37
by shingaridavesh


I don't know the answer to the first question offhand. I would have browse sources.

The ELDK I am using on a custom ARM board does not have paging, and Linux works just fine.

2012-04-03 20:26
by wallyk