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
unicore32
include
asm
mmu_context.h
Go to the documentation of this file.
1
/*
2
* linux/arch/unicore32/include/asm/mmu_context.h
3
*
4
* Code specific to PKUnity SoC and UniCore ISA
5
*
6
* Copyright (C) 2001-2010 GUAN Xue-tao
7
*
8
* This program is free software; you can redistribute it and/or modify
9
* it under the terms of the GNU General Public License version 2 as
10
* published by the Free Software Foundation.
11
*/
12
#ifndef __UNICORE_MMU_CONTEXT_H__
13
#define __UNICORE_MMU_CONTEXT_H__
14
15
#include <linux/compiler.h>
16
#include <linux/sched.h>
17
#include <
linux/io.h
>
18
19
#include <asm/cacheflush.h>
20
#include <
asm/cpu-single.h
>
21
22
#define init_new_context(tsk, mm) 0
23
24
#define destroy_context(mm) do { } while (0)
25
26
/*
27
* This is called when "tsk" is about to enter lazy TLB mode.
28
*
29
* mm: describes the currently active mm context
30
* tsk: task which is entering lazy tlb
31
* cpu: cpu number which is entering lazy tlb
32
*
33
* tsk->mm will be NULL
34
*/
35
static
inline
void
36
enter_lazy_tlb
(
struct
mm_struct
*mm,
struct
task_struct
*tsk)
37
{
38
}
39
40
/*
41
* This is the actual mm switch as far as the scheduler
42
* is concerned. No registers are touched. We avoid
43
* calling the CPU specific function when the mm hasn't
44
* actually changed.
45
*/
46
static
inline
void
47
switch_mm
(
struct
mm_struct
*
prev
,
struct
mm_struct
*
next
,
48
struct
task_struct
*tsk)
49
{
50
unsigned
int
cpu
=
smp_processor_id
();
51
52
if
(!cpumask_test_and_set_cpu(cpu, mm_cpumask(next)) || prev != next)
53
cpu_switch_mm(next->
pgd
, next);
54
}
55
56
#define deactivate_mm(tsk, mm) do { } while (0)
57
#define activate_mm(prev, next) switch_mm(prev, next, NULL)
58
59
/*
60
* We are inserting a "fake" vma for the user-accessible vector page so
61
* gdb and friends can get to it through ptrace and /proc/<pid>/mem.
62
* But we also want to remove it before the generic code gets to see it
63
* during process exit or the unmapping of it would cause total havoc.
64
* (the macro is used as remove_vma() is static to mm/mmap.c)
65
*/
66
#define arch_exit_mmap(mm) \
67
do { \
68
struct vm_area_struct *high_vma = find_vma(mm, 0xffff0000); \
69
if (high_vma) { \
70
BUG_ON(high_vma->vm_next);
/* it should be last */
\
71
if (high_vma->vm_prev) \
72
high_vma->vm_prev->vm_next = NULL; \
73
else \
74
mm->mmap = NULL; \
75
rb_erase(&high_vma->vm_rb, &mm->mm_rb); \
76
mm->mmap_cache = NULL; \
77
mm->map_count--; \
78
remove_vma(high_vma); \
79
} \
80
} while (0)
81
82
static
inline
void
arch_dup_mmap(
struct
mm_struct
*oldmm,
83
struct
mm_struct
*mm)
84
{
85
}
86
87
#endif
Generated on Thu Jan 10 2013 12:49:59 for Linux Kernel by
1.8.2