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
hexagon
include
asm
mmu_context.h
Go to the documentation of this file.
1
/*
2
* MM context support for the Hexagon architecture
3
*
4
* Copyright (c) 2010-2011, The Linux Foundation. All rights reserved.
5
*
6
* This program is free software; you can redistribute it and/or modify
7
* it under the terms of the GNU General Public License version 2 and
8
* only version 2 as published by the Free Software Foundation.
9
*
10
* This program is distributed in the hope that it will be useful,
11
* but WITHOUT ANY WARRANTY; without even the implied warranty of
12
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13
* GNU General Public License for more details.
14
*
15
* You should have received a copy of the GNU General Public License
16
* along with this program; if not, write to the Free Software
17
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
18
* 02110-1301, USA.
19
*/
20
21
#ifndef _ASM_MMU_CONTEXT_H
22
#define _ASM_MMU_CONTEXT_H
23
24
#include <asm/setup.h>
25
#include <asm/page.h>
26
#include <asm/pgalloc.h>
27
#include <asm/mem-layout.h>
28
29
static
inline
void
destroy_context
(
struct
mm_struct
*mm)
30
{
31
}
32
33
/*
34
* VM port hides all TLB management, so "lazy TLB" isn't very
35
* meaningful. Even for ports to architectures with visble TLBs,
36
* this is almost invariably a null function.
37
*/
38
static
inline
void
enter_lazy_tlb
(
struct
mm_struct
*mm,
39
struct
task_struct
*tsk)
40
{
41
}
42
43
/*
44
* Architecture-specific actions, if any, for memory map deactivation.
45
*/
46
static
inline
void
deactivate_mm
(
struct
task_struct
*tsk,
47
struct
mm_struct
*mm)
48
{
49
}
50
56
static
inline
int
init_new_context
(
struct
task_struct
*tsk,
57
struct
mm_struct
*mm)
58
{
59
/* mm->context is set up by pgd_alloc */
60
return
0;
61
}
62
63
/*
64
* Switch active mm context
65
*/
66
static
inline
void
switch_mm
(
struct
mm_struct
*
prev
,
struct
mm_struct
*
next
,
67
struct
task_struct
*tsk)
68
{
69
int
l1
;
70
71
/*
72
* For virtual machine, we have to update system map if it's been
73
* touched.
74
*/
75
if
(next->
context
.generation < prev->
context
.generation) {
76
for
(l1 =
MIN_KERNEL_SEG
; l1 <=
max_kernel_seg
; l1++)
77
next->
pgd
[l1] =
init_mm
.pgd[l1];
78
79
next->
context
.generation = prev->
context
.generation;
80
}
81
82
__vmnewmap
((
void
*)next->
context
.ptbase);
83
}
84
85
/*
86
* Activate new memory map for task
87
*/
88
static
inline
void
activate_mm
(
struct
mm_struct
*prev,
struct
mm_struct
*next)
89
{
90
unsigned
long
flags
;
91
92
local_irq_save
(flags);
93
switch_mm
(prev, next,
current_thread_info
()->
task
);
94
local_irq_restore
(flags);
95
}
96
97
/* Generic hooks for arch_dup_mmap and arch_exit_mmap */
98
#include <
asm-generic/mm_hooks.h
>
99
100
#endif
Generated on Thu Jan 10 2013 12:49:58 for Linux Kernel by
1.8.2