avr32: Add simple paging support
authorHaavard Skinnemoen <haavard.skinnemoen@atmel.com>
Thu, 12 Aug 2010 06:52:54 +0000 (13:52 +0700)
committerReinhard Meyer <u-boot@emk-elektronik.de>
Fri, 3 Sep 2010 13:13:02 +0000 (15:13 +0200)
commit1f36f73fe70560a2bd286a7abc8530fdc93af9ae
tree23ba61ced5254af43107e7d0de5b25b566ac78bb
parent9cec2fc209a000655af77256a39ede7c7d441e56
avr32: Add simple paging support

Use the MMU hardware to set up 1:1 mappings between physical and virtual
addresses. This allows us to bypass the cache when accessing the flash
without having to do any physical-to-virtual address mapping in the CFI
driver.

The virtual memory mappings are defined at compile time through a sorted
array of virtual memory range objects. When a TLB miss exception
happens, the exception handler does a binary search through the array
until it finds a matching entry and loads it into the TLB. The u-boot
image itself is covered by a fixed TLB entry which is never replaced.

This makes the 'saveenv' command work again on ATNGW100 and other boards
using the CFI driver, hopefully without breaking any rules.

Signed-off-by: Haavard Skinnemoen <haavard.skinnemoen@atmel.com>
19 files changed:
arch/avr32/cpu/at32ap700x/Makefile
arch/avr32/cpu/at32ap700x/mmu.c [new file with mode: 0644]
arch/avr32/cpu/start.S
arch/avr32/include/asm/arch-at32ap700x/addrspace.h
arch/avr32/include/asm/arch-at32ap700x/mmu.h [new file with mode: 0644]
arch/avr32/lib/board.c
board/atmel/atngw100/atngw100.c
board/atmel/atstk1000/atstk1000.c
board/earthlcd/favr-32-ezkit/favr-32-ezkit.c
board/mimc/mimc200/mimc200.c
board/miromico/hammerhead/hammerhead.c
include/configs/atngw100.h
include/configs/atstk1002.h
include/configs/atstk1003.h
include/configs/atstk1004.h
include/configs/atstk1006.h
include/configs/favr-32-ezkit.h
include/configs/hammerhead.h
include/configs/mimc200.h