Linux Kernel
3.7.1
Main Page
Related Pages
Modules
Namespaces
Data Structures
Files
File List
Globals
All
Data Structures
Namespaces
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Macros
Groups
Pages
arch
mn10300
mm
mmu-context.c
Go to the documentation of this file.
1
/* MN10300 MMU context allocation and management
2
*
3
* Copyright (C) 2007 Red Hat, Inc. All Rights Reserved.
4
* Written by David Howells (
[email protected]
)
5
*
6
* This program is free software; you can redistribute it and/or
7
* modify it under the terms of the GNU General Public Licence
8
* as published by the Free Software Foundation; either version
9
* 2 of the Licence, or (at your option) any later version.
10
*/
11
#include <linux/sched.h>
12
#include <
linux/mm.h
>
13
#include <asm/mmu_context.h>
14
#include <asm/tlbflush.h>
15
16
#ifdef CONFIG_MN10300_TLB_USE_PIDR
17
/*
18
* list of the MMU contexts last allocated on each CPU
19
*/
20
unsigned
long
mmu_context_cache
[
NR_CPUS
] = {
21
[0 ...
NR_CPUS
- 1] =
22
MMU_CONTEXT_FIRST_VERSION
* 2 - (1 -
MMU_CONTEXT_TLBPID_LOCK_NR
),
23
};
24
#endif
/* CONFIG_MN10300_TLB_USE_PIDR */
25
26
/*
27
* preemptively set a TLB entry
28
*/
29
void
update_mmu_cache
(
struct
vm_area_struct
*vma,
unsigned
long
addr
,
pte_t
*ptep)
30
{
31
unsigned
long
pteu, ptel, cnx,
flags
;
32
pte_t
pte
= *ptep;
33
34
addr &=
PAGE_MASK
;
35
ptel =
pte_val
(pte) & ~(xPTEL_UNUSED1 | xPTEL_UNUSED2);
36
37
/* make sure the context doesn't migrate and defend against
38
* interference from vmalloc'd regions */
39
local_irq_save
(flags);
40
41
cnx = ~
MMU_NO_CONTEXT
;
42
#ifdef CONFIG_MN10300_TLB_USE_PIDR
43
cnx =
mm_context
(vma->
vm_mm
);
44
#endif
45
46
if
(cnx !=
MMU_NO_CONTEXT
) {
47
pteu =
addr
;
48
#ifdef CONFIG_MN10300_TLB_USE_PIDR
49
pteu |= cnx &
MMU_CONTEXT_TLBPID_MASK
;
50
#endif
51
if
(!(
pte_val
(pte) &
_PAGE_NX
)) {
52
IPTEU = pteu;
53
if
(IPTEL & xPTEL_V)
54
IPTEL = ptel;
55
}
56
DPTEU = pteu;
57
if
(DPTEL & xPTEL_V)
58
DPTEL = ptel;
59
}
60
61
local_irq_restore
(flags);
62
}
Generated on Thu Jan 10 2013 13:05:49 for Linux Kernel by
1.8.2