1#include <linux/init.h> 2#include <linux/module.h> 3#include <asm/sizes.h> 4#include <asm/page.h> 5#include <asm/addrspace.h> 6 7/* 8 * This is the offset of the uncached section from its cached alias. 9 * 10 * Legacy platforms handle trivial transitions between cached and 11 * uncached segments by making use of the 1:1 mapping relationship in 12 * 512MB lowmem, others via a special uncached mapping. 13 * 14 * Default value only valid in 29 bit mode, in 32bit mode this will be 15 * updated by the early PMB initialization code. 16 */ 17unsigned long cached_to_uncached = SZ_512M; 18unsigned long uncached_size = SZ_512M; 19unsigned long uncached_start, uncached_end; 20EXPORT_SYMBOL(uncached_start); 21EXPORT_SYMBOL(uncached_end); 22 23int virt_addr_uncached(unsigned long kaddr) 24{ 25 return (kaddr >= uncached_start) && (kaddr < uncached_end); 26} 27EXPORT_SYMBOL(virt_addr_uncached); 28 29void __init uncached_init(void) 30{ 31#if defined(CONFIG_29BIT) || !defined(CONFIG_MMU) 32 uncached_start = P2SEG; 33#else 34 uncached_start = memory_end; 35#endif 36 uncached_end = uncached_start + uncached_size; 37} 38 39void __init uncached_resize(unsigned long size) 40{ 41 uncached_size = size; 42 uncached_end = uncached_start + uncached_size; 43} 44