Commit 0079fe75 authored by Greg Ungerer's avatar Greg Ungerer
Browse files

m68k: init the MMU hardware for the 54xx ColdFire



The 54xx ColdFire CPU family has an internal MMU. Up to now though we
have only supported running on them with the MMU disabled.

Add code to the 54xx ColdFire init sequence to initialize the bootmem
used by the usual MMU m68k code for paging init.

Signed-off-by: default avatarGreg Ungerer <gerg@uclinux.org>
Acked-by: default avatarGeert Uytterhoeven <geert@linux-m68k.org>
Acked-by: default avatarMatt Waddel <mwaddel@yahoo.com>
Acked-by: default avatarKurt Mahan <kmahan@xmission.com>
parent feb1ee75
Loading
Loading
Loading
Loading
+46 −1
Original line number Diff line number Diff line
@@ -3,7 +3,7 @@
/*
 *	head.S -- common startup code for ColdFire CPUs.
 *
 *	(C) Copyright 1999-2010, Greg Ungerer <gerg@snapgear.com>.
 *	(C) Copyright 1999-2011, Greg Ungerer <gerg@snapgear.com>.
 */

/*****************************************************************************/
@@ -13,6 +13,7 @@
#include <asm/asm-offsets.h>
#include <asm/coldfire.h>
#include <asm/mcfsim.h>
#include <asm/mcfmmu.h>
#include <asm/thread_info.h>

/*****************************************************************************/
@@ -135,6 +136,14 @@ _init_sp:

__HEAD

#ifdef CONFIG_MMU
_start0:
	jmp	_start
.global kernel_pg_dir
.equ	kernel_pg_dir,_start0
.equ	.,_start0+0x1000
#endif

/*
 *	This is the codes first entry point. This is where it all
 *	begins...
@@ -193,6 +202,26 @@ _start:
	movec	%d0,%CACR
	nop

#ifdef CONFIG_MMU
	/*
	 *	Identity mapping for the kernel region.
	 */
	movel	#(MMUBASE+1),%d0		/* enable MMUBAR registers */
	movec	%d0,%MMUBAR
	movel	#MMUOR_CA,%d0			/* clear TLB entries */
	movel	%d0,MMUOR
	movel	#0,%d0				/* set ASID to 0 */
	movec	%d0,%asid

	movel	#MMUCR_EN,%d0			/* Enable the identity map */
	movel	%d0,MMUCR
	nop					/* sync i-pipeline */

	movel	#_vstart,%a0			/* jump to "virtual" space */
	jmp	%a0@
_vstart:
#endif /* CONFIG_MMU */

#ifdef CONFIG_ROMFS_FS
	/*
	 *	Move ROM filesystem above bss :-)
@@ -238,6 +267,22 @@ _clear_bss:
	lea	init_thread_union,%a0
	lea	THREAD_SIZE(%a0),%sp

#ifdef CONFIG_MMU
.global m68k_cputype
.global m68k_mmutype
.global m68k_fputype
.global m68k_machtype
	movel	#CPU_COLDFIRE,%d0
	movel	%d0,m68k_cputype		/* Mark us as a ColdFire */
	movel	#MMU_COLDFIRE,%d0
	movel	%d0,m68k_mmutype
	movel	#FPU_COLDFIRE,%d0
	movel	%d0,m68k_fputype
	movel	#MACH_M54XX,%d0
	movel	%d0,m68k_machtype		/* Mark us as a 54xx machine */
	lea	init_task,%a2			/* Set "current" init task */
#endif

	/*
	 *	Assember start up done, start code proper.
	 */