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
1
Pull requests
0
Actions
Projects
0
Wiki
Security
Insights
Additional navigation options
Code
Issues
Pull requests
Actions
Projects
Wiki
Security
Insights
Files
7a92fc8
Documentation
LICENSES
arch
alpha
arc
arm
arm64
csky
hexagon
loongarch
m68k
microblaze
mips
nios2
openrisc
parisc
powerpc
riscv
s390
sh
boards
boot
cchips
configs
drivers
include
asm
Kbuild
adc.h
addrspace.h
alignment.h
asm-offsets.h
atomic-grb.h
atomic-irq.h
atomic-llsc.h
atomic.h
barrier.h
bitops-cas.h
bitops-grb.h
bitops-llsc.h
bitops-op32.h
bitops.h
bl_bit.h
bl_bit_32.h
bug.h
cache.h
cache_insns.h
cache_insns_32.h
cacheflush.h
checksum.h
checksum_32.h
clock.h
cmpxchg-cas.h
cmpxchg-grb.h
cmpxchg-irq.h
cmpxchg-llsc.h
cmpxchg-xchg.h
cmpxchg.h
device.h
dma-register.h
dma.h
dmabrg.h
dwarf.h
elf.h
entry-macros.S
extable.h
fb.h
fixmap.h
flat.h
fpu.h
freq.h
ftrace.h
futex-cas.h
futex-irq.h
futex-llsc.h
futex.h
hardirq.h
hd64461.h
heartbeat.h
hugetlb.h
hw_breakpoint.h
hw_irq.h
i2c-sh7760.h
io.h
io_generic.h
io_noioport.h
io_trapped.h
irq.h
irqflags.h
kdebug.h
kexec.h
kgdb.h
kprobes.h
linkage.h
machvec.h
mmiowb.h
mmu.h
mmu_context.h
mmu_context_32.h
mmzone.h
module.h
page.h
pci.h
perf_event.h
pgalloc.h
pgtable-2level.h
pgtable-3level.h
pgtable.h
pgtable_32.h
platform_early.h
posix_types.h
processor.h
processor_32.h
ptrace.h
ptrace_32.h
push-switch.h
reboot.h
romimage-macros.h
rtc.h
seccomp.h
sections.h
setup.h
sfp-machine.h
sh7760fb.h
sh_bios.h
shmparam.h
siu.h
smc37c93x.h
smp-ops.h
smp.h
sparsemem.h
spi.h
spinlock-cas.h
spinlock-llsc.h
spinlock.h
spinlock_types.h
sram.h
stackprotector.h
stacktrace.h
string.h
string_32.h
suspend.h
switch_to.h
switch_to_32.h
syscall.h
syscall_32.h
syscalls.h
syscalls_32.h
thread_info.h
timex.h
tlb.h
tlbflush.h
topology.h
traps.h
traps_32.h
types.h
uaccess.h
uaccess_32.h
uncached.h
unistd.h
unwinder.h
user.h
vermagic.h
vga.h
vmalloc.h
vmlinux.lds.h
watchdog.h
word-at-a-time.h
cpu-common
cpu-sh2
cpu-sh2a
cpu-sh3
cpu-sh4
cpu-sh4a
mach-common
mach-dreamcast
mach-ecovec24
mach-kfr2r09
mach-landisk
mach-migor
mach-sdk7786
mach-se
mach-sh03
mach-x3proto
uapi
kernel
lib
math-emu
mm
tools
Kbuild
Kconfig
Kconfig.cpu
Kconfig.debug
Makefile
sparc
um
x86
xtensa
.gitignore
Kconfig
block
certs
crypto
drivers
fs
include
init
io_uring
ipc
kernel
lib
mm
net
rust
samples
scripts
security
sound
tools
usr
virt
.clang-format
.cocciconfig
.get_maintainer.ignore
.gitattributes
.gitignore
.mailmap
.rustfmt.toml
COPYING
CREDITS
Kbuild
Kconfig
MAINTAINERS
Makefile
README
Breadcrumbs
linux
/
arch
/
sh
/
include
/
asm
/
cacheflush.h
Copy path
Blame
Blame
Latest commit
History
History
114 lines (95 loc) · 3.91 KB
Breadcrumbs
linux
/
arch
/
sh
/
include
/
asm
/
cacheflush.h
Top
File metadata and controls
Code
Blame
114 lines (95 loc) · 3.91 KB
Raw
/* SPDX-License-Identifier: GPL-2.0 */ #ifndef __ASM_SH_CACHEFLUSH_H #define __ASM_SH_CACHEFLUSH_H #include <linux/mm.h> /* * Cache flushing: * * - flush_cache_all() flushes entire cache * - flush_cache_mm(mm) flushes the specified mm context's cache lines * - flush_cache_dup mm(mm) handles cache flushing when forking * - flush_cache_page(mm, vmaddr, pfn) flushes a single page * - flush_cache_range(vma, start, end) flushes a range of pages * * - flush_dcache_folio(folio) flushes(wback&invalidates) a folio for dcache * - flush_icache_range(start, end) flushes(invalidates) a range for icache * - flush_icache_pages(vma, pg, nr) flushes(invalidates) pages for icache * - flush_cache_sigtramp(vaddr) flushes the signal trampoline */ extern void (*local_flush_cache_all)(void *args); extern void (*local_flush_cache_mm)(void *args); extern void (*local_flush_cache_dup_mm)(void *args); extern void (*local_flush_cache_page)(void *args); extern void (*local_flush_cache_range)(void *args); extern void (*local_flush_dcache_folio)(void *args); extern void (*local_flush_icache_range)(void *args); extern void (*local_flush_icache_folio)(void *args); extern void (*local_flush_cache_sigtramp)(void *args); static inline void cache_noop(void *args) { } extern void (*__flush_wback_region)(void *start, int size); extern void (*__flush_purge_region)(void *start, int size); extern void (*__flush_invalidate_region)(void *start, int size); extern void flush_cache_all(void); extern void flush_cache_mm(struct mm_struct *mm); extern void flush_cache_dup_mm(struct mm_struct *mm); extern void flush_cache_page(struct vm_area_struct *vma, unsigned long addr, unsigned long pfn); extern void flush_cache_range(struct vm_area_struct *vma, unsigned long start, unsigned long end); #define ARCH_IMPLEMENTS_FLUSH_DCACHE_PAGE 1 void flush_dcache_folio(struct folio *folio); #define flush_dcache_folio flush_dcache_folio static inline void flush_dcache_page(struct page *page) { flush_dcache_folio(page_folio(page)); } extern void flush_icache_range(unsigned long start, unsigned long end); #define flush_icache_user_range flush_icache_range void flush_icache_pages(struct vm_area_struct *vma, struct page *page, unsigned int nr); #define flush_icache_pages flush_icache_pages extern void flush_cache_sigtramp(unsigned long address); struct flusher_data { struct vm_area_struct *vma; unsigned long addr1, addr2; }; #define ARCH_HAS_FLUSH_ANON_PAGE extern void __flush_anon_page(struct page *page, unsigned long); static inline void flush_anon_page(struct vm_area_struct *vma, struct page *page, unsigned long vmaddr) { if (boot_cpu_data.dcache.n_aliases && PageAnon(page)) __flush_anon_page(page, vmaddr); } #define ARCH_IMPLEMENTS_FLUSH_KERNEL_VMAP_RANGE 1 static inline void flush_kernel_vmap_range(void *addr, int size) { __flush_wback_region(addr, size); } static inline void invalidate_kernel_vmap_range(void *addr, int size) { __flush_invalidate_region(addr, size); } extern void copy_to_user_page(struct vm_area_struct *vma, struct page *page, unsigned long vaddr, void *dst, const void *src, unsigned long len); extern void copy_from_user_page(struct vm_area_struct *vma, struct page *page, unsigned long vaddr, void *dst, const void *src, unsigned long len); #define flush_cache_vmap(start, end) local_flush_cache_all(NULL) #define flush_cache_vmap_early(start, end) do { } while (0) #define flush_cache_vunmap(start, end) local_flush_cache_all(NULL) #define flush_dcache_mmap_lock(mapping) do { } while (0) #define flush_dcache_mmap_unlock(mapping) do { } while (0) void kmap_coherent_init(void); void *kmap_coherent(struct page *page, unsigned long addr); void kunmap_coherent(void *kvaddr); #define PG_dcache_clean PG_arch_1 void cpu_cache_init(void); static inline void *sh_cacheop_vaddr(void *vaddr) { if (__in_29bit_mode()) vaddr = (void *)CAC_ADDR((unsigned long)vaddr); return vaddr; } #endif /* __ASM_SH_CACHEFLUSH_H */
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
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
You can’t perform that action at this time.