Merge commit 'v2.6.34-rc2' into perf/core
[linux-2.6-block.git] / arch / sh / mm / uncached.c
CommitLineData
9edef286 1#include <linux/init.h>
5b34d1ee 2#include <linux/module.h>
9edef286
PM
3#include <asm/sizes.h>
4#include <asm/page.h>
40d1f004 5#include <asm/addrspace.h>
9edef286
PM
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;
5b34d1ee
PM
20EXPORT_SYMBOL(uncached_start);
21EXPORT_SYMBOL(uncached_end);
9edef286
PM
22
23int virt_addr_uncached(unsigned long kaddr)
24{
25 return (kaddr >= uncached_start) && (kaddr < uncached_end);
26}
5b34d1ee 27EXPORT_SYMBOL(virt_addr_uncached);
9edef286
PM
28
29void __init uncached_init(void)
30{
40d1f004
PM
31#ifdef CONFIG_29BIT
32 uncached_start = P2SEG;
33#else
9edef286 34 uncached_start = memory_end;
40d1f004 35#endif
9edef286
PM
36 uncached_end = uncached_start + uncached_size;
37}
d01447b3
PM
38
39void __init uncached_resize(unsigned long size)
40{
41 uncached_size = size;
42 uncached_end = uncached_start + uncached_size;
43}