mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-11-17 17:24:17 +08:00
f50b153b19
To add support for 36-bit physical addressing on e500 the following changes have been made. The changes are generalized to support any physical address size larger than 32-bits: * Allow FSL Book-E parts to use a 64-bit PTE, it is 44-bits of pfn, 20-bits of flags. * Introduced new CPU feature (CPU_FTR_BIG_PHYS) to allow runtime handling of updating hardware register (SPRN_MAS7) which holds the upper 32-bits of physical address that will be written into the TLB. This is useful since not all e500 cores support 36-bit physical addressing. * Currently have a pass through implementation of fixup_bigphys_addr * Moved _PAGE_DIRTY in the 64-bit PTE case to free room for three additional storage attributes that may exist in future FSL Book-E cores and updated fault handler to copy these bits into the hardware TLBs. Signed-off-by: Kumar Gala <kumar.gala@freescale.com> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
42 lines
980 B
C
42 lines
980 B
C
/*
|
|
* arch/ppc/syslib/ppc85xx_common.c
|
|
*
|
|
* MPC85xx support routines
|
|
*
|
|
* Maintainer: Kumar Gala <kumar.gala@freescale.com>
|
|
*
|
|
* Copyright 2004 Freescale Semiconductor Inc.
|
|
*
|
|
* This program is free software; you can redistribute it and/or modify it
|
|
* under the terms of the GNU General Public License as published by the
|
|
* Free Software Foundation; either version 2 of the License, or (at your
|
|
* option) any later version.
|
|
*/
|
|
|
|
#include <linux/config.h>
|
|
#include <linux/types.h>
|
|
#include <linux/module.h>
|
|
#include <linux/init.h>
|
|
|
|
#include <asm/mpc85xx.h>
|
|
#include <asm/mmu.h>
|
|
|
|
/* ************************************************************************ */
|
|
/* Return the value of CCSRBAR for the current board */
|
|
|
|
phys_addr_t
|
|
get_ccsrbar(void)
|
|
{
|
|
return BOARD_CCSRBAR;
|
|
}
|
|
|
|
EXPORT_SYMBOL(get_ccsrbar);
|
|
|
|
/* For now this is a pass through */
|
|
phys_addr_t fixup_bigphys_addr(phys_addr_t addr, phys_addr_t size)
|
|
{
|
|
return addr;
|
|
};
|
|
EXPORT_SYMBOL(fixup_bigphys_addr);
|
|
|