Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
awilliam
GitHub Repository: awilliam/linux-vfio
Path: blob/master/arch/sh/mm/uncached.c
10817 views
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
*/
17
unsigned long cached_to_uncached = SZ_512M;
18
unsigned long uncached_size = SZ_512M;
19
unsigned long uncached_start, uncached_end;
20
EXPORT_SYMBOL(uncached_start);
21
EXPORT_SYMBOL(uncached_end);
22
23
int virt_addr_uncached(unsigned long kaddr)
24
{
25
return (kaddr >= uncached_start) && (kaddr < uncached_end);
26
}
27
EXPORT_SYMBOL(virt_addr_uncached);
28
29
void __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
39
void __init uncached_resize(unsigned long size)
40
{
41
uncached_size = size;
42
uncached_end = uncached_start + uncached_size;
43
}
44
45