404

[ Avaa Bypassed ]




Upload:

Command:

botdev@3.21.166.125: ~ $
/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ALPHA_CACHEFLUSH_H
#define _ALPHA_CACHEFLUSH_H

#include <linux/mm.h>

/* Caches aren't brain-dead on the Alpha. */
#define flush_cache_all()			do { } while (0)
#define flush_cache_mm(mm)			do { } while (0)
#define flush_cache_dup_mm(mm)			do { } while (0)
#define flush_cache_range(vma, start, end)	do { } while (0)
#define flush_cache_page(vma, vmaddr, pfn)	do { } while (0)
#define ARCH_IMPLEMENTS_FLUSH_DCACHE_PAGE 0
#define flush_dcache_page(page)			do { } while (0)
#define flush_dcache_mmap_lock(mapping)		do { } while (0)
#define flush_dcache_mmap_unlock(mapping)	do { } while (0)
#define flush_cache_vmap(start, end)		do { } while (0)
#define flush_cache_vunmap(start, end)		do { } while (0)

/* Note that the following two definitions are _highly_ dependent
   on the contexts in which they are used in the kernel.  I personally
   think it is criminal how loosely defined these macros are.  */

/* We need to flush the kernel's icache after loading modules.  The
   only other use of this macro is in load_aout_interp which is not
   used on Alpha. 

   Note that this definition should *not* be used for userspace
   icache flushing.  While functional, it is _way_ overkill.  The
   icache is tagged with ASNs and it suffices to allocate a new ASN
   for the process.  */
#ifndef CONFIG_SMP
#define flush_icache_range(start, end)		imb()
#else
#define flush_icache_range(start, end)		smp_imb()
extern void smp_imb(void);
#endif

/* We need to flush the userspace icache after setting breakpoints in
   ptrace.

   Instead of indiscriminately using imb, take advantage of the fact
   that icache entries are tagged with the ASN and load a new mm context.  */
/* ??? Ought to use this in arch/alpha/kernel/signal.c too.  */

#ifndef CONFIG_SMP
#include <linux/sched.h>

extern void __load_new_mm_context(struct mm_struct *);
static inline void
flush_icache_user_range(struct vm_area_struct *vma, struct page *page,
			unsigned long addr, int len)
{
	if (vma->vm_flags & VM_EXEC) {
		struct mm_struct *mm = vma->vm_mm;
		if (current->active_mm == mm)
			__load_new_mm_context(mm);
		else
			mm->context[smp_processor_id()] = 0;
	}
}
#else
extern void flush_icache_user_range(struct vm_area_struct *vma,
		struct page *page, unsigned long addr, int len);
#endif

/* This is used only in __do_fault and do_swap_page.  */
#define flush_icache_page(vma, page) \
  flush_icache_user_range((vma), (page), 0, 0)

#define copy_to_user_page(vma, page, vaddr, dst, src, len) \
do { memcpy(dst, src, len); \
     flush_icache_user_range(vma, page, vaddr, len); \
} while (0)
#define copy_from_user_page(vma, page, vaddr, dst, src, len) \
	memcpy(dst, src, len)

#endif /* _ALPHA_CACHEFLUSH_H */

Filemanager

Name Type Size Permission Actions
Kbuild File 320 B 0644
a.out-core.h File 2.41 KB 0644
a.out.h File 574 B 0644
agp.h File 457 B 0644
agp_backend.h File 948 B 0644
asm-offsets.h File 35 B 0644
asm-prototypes.h File 405 B 0644
atomic.h File 9.15 KB 0644
barrier.h File 2.17 KB 0644
bitops.h File 8.83 KB 0644
bug.h File 571 B 0644
bugs.h File 294 B 0644
cache.h File 507 B 0644
cacheflush.h File 2.68 KB 0644
checksum.h File 1.93 KB 0644
cmpxchg.h File 1.67 KB 0644
compiler.h File 498 B 0644
console.h File 1.06 KB 0644
core_apecs.h File 16.91 KB 0644
core_cia.h File 15.43 KB 0644
core_irongate.h File 6.63 KB 0644
core_lca.h File 11.36 KB 0644
core_marvel.h File 9.15 KB 0644
core_mcpcia.h File 11.45 KB 0644
core_polaris.h File 2.92 KB 0644
core_t2.h File 19.13 KB 0644
core_titan.h File 11.2 KB 0644
core_tsunami.h File 8.29 KB 0644
core_wildfire.h File 8.45 KB 0644
delay.h File 264 B 0644
device.h File 129 B 0644
div64.h File 31 B 0644
dma-mapping.h File 276 B 0644
dma.h File 12.37 KB 0644
elf.h File 5.71 KB 0644
emergency-restart.h File 149 B 0644
err_common.h File 3.24 KB 0644
err_ev6.h File 116 B 0644
err_ev7.h File 4.37 KB 0644
extable.h File 1.42 KB 0644
floppy.h File 3.07 KB 0644
fpu.h File 1.78 KB 0644
ftrace.h File 12 B 0644
futex.h File 1.97 KB 0644
gct.h File 1.02 KB 0644
hardirq.h File 223 B 0644
hw_irq.h File 302 B 0644
hwrpb.h File 6.9 KB 0644
io.h File 15.03 KB 0644
io_trivial.h File 3.07 KB 0644
irq.h File 2.31 KB 0644
irq_regs.h File 34 B 0644
irqflags.h File 1.17 KB 0644
jensen.h File 8.39 KB 0644
kdebug.h File 32 B 0644
kmap_types.h File 265 B 0644
linkage.h File 256 B 0644
local.h File 2.59 KB 0644
local64.h File 33 B 0644
machvec.h File 3.68 KB 0644
mc146818rtc.h File 680 B 0644
mce.h File 4.04 KB 0644
mmu.h File 203 B 0644
mmu_context.h File 7.09 KB 0644
mmzone.h File 2.98 KB 0644
module.h File 329 B 0644
page.h File 2.46 KB 0644
pal.h File 5.01 KB 0644
param.h File 284 B 0644
parport.h File 536 B 0644
pci.h File 2.87 KB 0644
percpu.h File 527 B 0644
perf_event.h File 105 B 0644
pgalloc.h File 1.82 KB 0644
pgtable.h File 13.17 KB 0644
processor.h File 2.07 KB 0644
ptrace.h File 754 B 0644
rwsem.h File 4.62 KB 0644
segment.h File 132 B 0644
serial.h File 1.01 KB 0644
sfp-machine.h File 2.86 KB 0644
shmparam.h File 191 B 0644
signal.h File 627 B 0644
smp.h File 1.34 KB 0644
socket.h File 310 B 0644
special_insns.h File 925 B 0644
spinlock.h File 2.85 KB 0644
spinlock_types.h File 413 B 0644
string.h File 2.42 KB 0644
switch_to.h File 406 B 0644
syscall.h File 235 B 0644
termios.h File 2.98 KB 0644
thread_info.h File 3.63 KB 0644
timex.h File 827 B 0644
tlb.h File 473 B 0644
tlbflush.h File 3.37 KB 0644
topology.h File 957 B 0644
types.h File 143 B 0644
uaccess.h File 9.56 KB 0644
ucontext.h File 348 B 0644
unaligned.h File 340 B 0644
unistd.h File 494 B 0644
user.h File 2.14 KB 0644
vga.h File 2 KB 0644
word-at-a-time.h File 1.34 KB 0644
wrperfmon.h File 2.56 KB 0644
xchg.h File 5.74 KB 0644
xor.h File 21.71 KB 0644