Skip to content
Navigation Menu
Toggle navigation
Sign in
In this repository
All GitHub Enterprise
↵
Jump to
↵
No suggested jump to results
In this repository
All GitHub Enterprise
↵
Jump to
↵
In this organization
All GitHub Enterprise
↵
Jump to
↵
In this repository
All GitHub Enterprise
↵
Jump to
↵
Sign in
Reseting focus
You signed in with another tab or window.
Reload
to refresh your session.
You signed out in another tab or window.
Reload
to refresh your session.
You switched accounts on another tab or window.
Reload
to refresh your session.
Dismiss alert
{{ message }}
mariux64
/
linux
Public
Notifications
You must be signed in to change notification settings
Fork
0
Star
0
Code
Issues
2
Pull requests
0
Actions
Projects
0
Wiki
Security
Insights
Additional navigation options
Code
Issues
Pull requests
Actions
Projects
Wiki
Security
Insights
Files
e3d2f92
Documentation
arch
alpha
arm
avr32
blackfin
cris
frv
h8300
ia64
m32r
m68k
m68knommu
mips
mn10300
parisc
configs
hpux
include/asm
Kbuild
agp.h
asmregs.h
assembly.h
atomic.h
auxvec.h
bitops.h
bug.h
bugs.h
byteorder.h
cache.h
cacheflush.h
checksum.h
compat.h
compat_rt_sigframe.h
compat_signal.h
compat_ucontext.h
cputime.h
current.h
delay.h
device.h
div64.h
dma-mapping.h
dma.h
eisa_bus.h
eisa_eeprom.h
elf.h
emergency-restart.h
errno.h
fb.h
fcntl.h
fixmap.h
floppy.h
futex.h
grfioctl.h
hardirq.h
hardware.h
hw_irq.h
ide.h
io.h
ioctl.h
ioctls.h
ipcbuf.h
irq.h
irq_regs.h
kdebug.h
kmap_types.h
led.h
linkage.h
local.h
machdep.h
mc146818rtc.h
mckinley.h
mman.h
mmu.h
mmu_context.h
mmzone.h
module.h
msgbuf.h
mutex.h
page.h
param.h
parisc-device.h
parport.h
pci.h
pdc.h
pdc_chassis.h
pdcpat.h
percpu.h
perf.h
pgalloc.h
pgtable.h
poll.h
posix_types.h
prefetch.h
processor.h
psw.h
ptrace.h
real.h
resource.h
ropes.h
rt_sigframe.h
rtc.h
runway.h
scatterlist.h
sections.h
segment.h
sembuf.h
serial.h
setup.h
shmbuf.h
shmparam.h
sigcontext.h
siginfo.h
signal.h
smp.h
socket.h
sockios.h
spinlock.h
spinlock_types.h
stat.h
statfs.h
string.h
superio.h
system.h
termbits.h
termios.h
thread_info.h
timex.h
tlb.h
tlbflush.h
topology.h
traps.h
types.h
uaccess.h
ucontext.h
unaligned.h
unistd.h
unwind.h
user.h
vga.h
xor.h
kernel
lib
math-emu
mm
oprofile
Kconfig
Kconfig.debug
Makefile
defpalo.conf
install.sh
nm
powerpc
s390
sh
sparc
sparc64
um
x86
xtensa
.gitignore
Kconfig
block
crypto
drivers
firmware
fs
include
init
ipc
kernel
lib
mm
net
samples
scripts
security
sound
usr
virt
.gitignore
.mailmap
COPYING
CREDITS
Kbuild
MAINTAINERS
Makefile
README
REPORTING-BUGS
Breadcrumbs
linux
/
arch
/
parisc
/
include
/
asm
/
tlbflush.h
Copy path
Blame
Blame
Latest commit
History
History
80 lines (65 loc) · 2.17 KB
Breadcrumbs
linux
/
arch
/
parisc
/
include
/
asm
/
tlbflush.h
Top
File metadata and controls
Code
Blame
80 lines (65 loc) · 2.17 KB
Raw
#ifndef _PARISC_TLBFLUSH_H #define _PARISC_TLBFLUSH_H /* TLB flushing routines.... */ #include <linux/mm.h> #include <linux/sched.h> #include <asm/mmu_context.h> /* This is for the serialisation of PxTLB broadcasts. At least on the * N class systems, only one PxTLB inter processor broadcast can be * active at any one time on the Merced bus. This tlb purge * synchronisation is fairly lightweight and harmless so we activate * it on all SMP systems not just the N class. We also need to have * preemption disabled on uniprocessor machines, and spin_lock does that * nicely. */ extern spinlock_t pa_tlb_lock; #define purge_tlb_start(x) spin_lock(&pa_tlb_lock) #define purge_tlb_end(x) spin_unlock(&pa_tlb_lock) extern void flush_tlb_all(void); extern void flush_tlb_all_local(void *); /* * flush_tlb_mm() * * XXX This code is NOT valid for HP-UX compatibility processes, * (although it will probably work 99% of the time). HP-UX * processes are free to play with the space id's and save them * over long periods of time, etc. so we have to preserve the * space and just flush the entire tlb. We need to check the * personality in order to do that, but the personality is not * currently being set correctly. * * Of course, Linux processes could do the same thing, but * we don't support that (and the compilers, dynamic linker, * etc. do not do that). */ static inline void flush_tlb_mm(struct mm_struct *mm) { BUG_ON(mm == &init_mm); /* Should never happen */ #ifdef CONFIG_SMP flush_tlb_all(); #else if (mm) { if (mm->context != 0) free_sid(mm->context); mm->context = alloc_sid(); if (mm == current->active_mm) load_context(mm->context); } #endif } static inline void flush_tlb_page(struct vm_area_struct *vma, unsigned long addr) { /* For one page, it's not worth testing the split_tlb variable */ mb(); mtsp(vma->vm_mm->context,1); purge_tlb_start(); pdtlb(addr); pitlb(addr); purge_tlb_end(); } void __flush_tlb_range(unsigned long sid, unsigned long start, unsigned long end); #define flush_tlb_range(vma,start,end) __flush_tlb_range((vma)->vm_mm->context,start,end) #define flush_tlb_kernel_range(start, end) __flush_tlb_range(0,start,end) #endif
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
You can’t perform that action at this time.