OXIESEC PANEL
- Current Dir:
/
/
usr
/
src
/
linux-headers-4.15.0-213
/
arch
/
parisc
/
include
/
asm
Server IP: 139.59.38.164
Upload:
Create Dir:
Name
Size
Modified
Perms
📁
..
-
05/09/2024 07:14:13 AM
rwxr-xr-x
📄
Kbuild
610 bytes
01/28/2018 09:20:33 PM
rw-r--r--
📄
agp.h
596 bytes
01/28/2018 09:20:33 PM
rw-r--r--
📄
asm-offsets.h
35 bytes
01/28/2018 09:20:33 PM
rw-r--r--
📄
asmregs.h
3.04 KB
01/28/2018 09:20:33 PM
rw-r--r--
📄
assembly.h
12.94 KB
06/16/2023 05:32:39 PM
rw-r--r--
📄
atomic.h
8.24 KB
06/16/2023 05:32:39 PM
rw-r--r--
📄
barrier.h
2.44 KB
06/16/2023 05:32:39 PM
rw-r--r--
📄
bitops.h
5.89 KB
01/28/2018 09:20:33 PM
rw-r--r--
📄
bug.h
2.35 KB
01/28/2018 09:20:33 PM
rw-r--r--
📄
bugs.h
340 bytes
01/28/2018 09:20:33 PM
rw-r--r--
📄
cache.h
1.59 KB
01/28/2018 09:20:33 PM
rw-r--r--
📄
cacheflush.h
4.06 KB
06/16/2023 05:32:39 PM
rw-r--r--
📄
checksum.h
5.48 KB
01/28/2018 09:20:33 PM
rw-r--r--
📄
cmpxchg.h
3.62 KB
06/16/2023 05:32:39 PM
rw-r--r--
📄
compat.h
6.52 KB
01/28/2018 09:20:33 PM
rw-r--r--
📄
compat_ucontext.h
591 bytes
01/28/2018 09:20:33 PM
rw-r--r--
📄
delay.h
533 bytes
01/28/2018 09:20:33 PM
rw-r--r--
📄
dma-mapping.h
2.42 KB
01/28/2018 09:20:33 PM
rw-r--r--
📄
dma.h
5.71 KB
01/28/2018 09:20:33 PM
rw-r--r--
📄
dwarf.h
602 bytes
01/28/2018 09:20:33 PM
rw-r--r--
📄
eisa_bus.h
702 bytes
01/28/2018 09:20:33 PM
rw-r--r--
📄
eisa_eeprom.h
4.42 KB
01/28/2018 09:20:33 PM
rw-r--r--
📄
elf.h
14.31 KB
01/28/2018 09:20:33 PM
rw-r--r--
📄
fb.h
403 bytes
01/28/2018 09:20:33 PM
rw-r--r--
📄
fixmap.h
1.15 KB
01/28/2018 09:20:33 PM
rw-r--r--
📄
floppy.h
6.61 KB
01/28/2018 09:20:33 PM
rw-r--r--
📄
ftrace.h
379 bytes
01/28/2018 09:20:33 PM
rw-r--r--
📄
futex.h
2.66 KB
01/28/2018 09:20:33 PM
rw-r--r--
📄
grfioctl.h
4.68 KB
01/28/2018 09:20:33 PM
rw-r--r--
📄
hardirq.h
1.3 KB
01/28/2018 09:20:33 PM
rw-r--r--
📄
hardware.h
4.1 KB
06/16/2023 05:32:39 PM
rw-r--r--
📄
hash.h
5.07 KB
01/28/2018 09:20:33 PM
rw-r--r--
📄
hugetlb.h
1.67 KB
01/28/2018 09:20:33 PM
rw-r--r--
📄
ide.h
1.09 KB
01/28/2018 09:20:33 PM
rw-r--r--
📄
io.h
8.14 KB
01/28/2018 09:20:33 PM
rw-r--r--
📄
irq.h
1.23 KB
01/28/2018 09:20:33 PM
rw-r--r--
📄
irqflags.h
1.02 KB
01/28/2018 09:20:33 PM
rw-r--r--
📄
kbdleds.h
477 bytes
01/28/2018 09:20:33 PM
rw-r--r--
📄
kmap_types.h
221 bytes
01/28/2018 09:20:33 PM
rw-r--r--
📄
ldcw.h
2.15 KB
01/28/2018 09:20:33 PM
rw-r--r--
📄
led.h
1.33 KB
01/28/2018 09:20:33 PM
rw-r--r--
📄
linkage.h
759 bytes
01/28/2018 09:20:33 PM
rw-r--r--
📄
machdep.h
349 bytes
01/28/2018 09:20:33 PM
rw-r--r--
📄
mckinley.h
270 bytes
01/28/2018 09:20:33 PM
rw-r--r--
📄
mmu.h
195 bytes
01/28/2018 09:20:33 PM
rw-r--r--
📄
mmu_context.h
2.08 KB
01/28/2018 09:20:33 PM
rw-r--r--
📄
mmzone.h
1.51 KB
01/28/2018 09:20:33 PM
rw-r--r--
📄
module.h
527 bytes
01/28/2018 09:20:33 PM
rw-r--r--
📄
page.h
5.42 KB
06/16/2023 05:32:39 PM
rw-r--r--
📄
parisc-device.h
1.92 KB
01/28/2018 09:20:33 PM
rw-r--r--
📄
parport.h
358 bytes
01/28/2018 09:20:33 PM
rw-r--r--
📄
pci.h
6.57 KB
01/28/2018 09:20:33 PM
rw-r--r--
📄
pdc.h
3.93 KB
01/28/2018 09:20:33 PM
rw-r--r--
📄
pdc_chassis.h
15.06 KB
01/28/2018 09:20:33 PM
rw-r--r--
📄
pdcpat.h
15 KB
01/28/2018 09:20:33 PM
rw-r--r--
📄
perf.h
1.89 KB
01/28/2018 09:20:33 PM
rw-r--r--
📄
perf_event.h
152 bytes
01/28/2018 09:20:33 PM
rw-r--r--
📄
pgalloc.h
4.22 KB
01/28/2018 09:20:33 PM
rw-r--r--
📄
pgtable.h
18.92 KB
06/16/2023 05:32:39 PM
rw-r--r--
📄
prefetch.h
1.12 KB
01/28/2018 09:20:33 PM
rw-r--r--
📄
processor.h
9.86 KB
06/16/2023 05:32:39 PM
rw-r--r--
📄
psw.h
2.39 KB
01/28/2018 09:20:33 PM
rw-r--r--
📄
ptrace.h
803 bytes
06/16/2023 05:32:39 PM
rw-r--r--
📄
ropes.h
9.73 KB
01/28/2018 09:20:33 PM
rw-r--r--
📄
rt_sigframe.h
745 bytes
01/28/2018 09:20:33 PM
rw-r--r--
📄
runway.h
320 bytes
01/28/2018 09:20:33 PM
rw-r--r--
📄
sections.h
283 bytes
01/28/2018 09:20:33 PM
rw-r--r--
📄
serial.h
124 bytes
01/28/2018 09:20:33 PM
rw-r--r--
📄
shmparam.h
263 bytes
01/28/2018 09:20:33 PM
rw-r--r--
📄
signal.h
841 bytes
01/28/2018 09:20:33 PM
rw-r--r--
📄
smp.h
1.25 KB
01/28/2018 09:20:33 PM
rw-r--r--
📄
socket.h
311 bytes
01/28/2018 09:20:33 PM
rw-r--r--
📄
special_insns.h
1015 bytes
01/28/2018 09:20:33 PM
rw-r--r--
📄
spinlock.h
4.02 KB
06/16/2023 05:32:39 PM
rw-r--r--
📄
spinlock_types.h
483 bytes
01/28/2018 09:20:33 PM
rw-r--r--
📄
string.h
247 bytes
01/28/2018 09:20:33 PM
rw-r--r--
📄
superio.h
3.25 KB
01/28/2018 09:20:33 PM
rw-r--r--
📄
switch_to.h
332 bytes
01/28/2018 09:20:33 PM
rw-r--r--
📄
syscall.h
1.4 KB
01/28/2018 09:20:33 PM
rw-r--r--
📄
termios.h
1.72 KB
01/28/2018 09:20:33 PM
rw-r--r--
📄
thread_info.h
3.15 KB
01/28/2018 09:20:33 PM
rw-r--r--
📄
timex.h
372 bytes
06/16/2023 05:32:39 PM
rw-r--r--
📄
tlb.h
672 bytes
01/28/2018 09:20:33 PM
rw-r--r--
📄
tlbflush.h
2.63 KB
01/28/2018 09:20:33 PM
rw-r--r--
📄
topology.h
900 bytes
01/28/2018 09:20:33 PM
rw-r--r--
📄
traps.h
468 bytes
01/28/2018 09:20:33 PM
rw-r--r--
📄
uaccess.h
6.55 KB
01/28/2018 09:20:33 PM
rw-r--r--
📄
ucontext.h
327 bytes
01/28/2018 09:20:33 PM
rw-r--r--
📄
unaligned.h
472 bytes
01/28/2018 09:20:33 PM
rw-r--r--
📄
unistd.h
5.47 KB
01/28/2018 09:20:33 PM
rw-r--r--
📄
unwind.h
2.56 KB
01/28/2018 09:20:33 PM
rw-r--r--
Editing: uaccess.h
Close
/* SPDX-License-Identifier: GPL-2.0 */ #ifndef __PARISC_UACCESS_H #define __PARISC_UACCESS_H /* * User space memory access functions */ #include <asm/page.h> #include <asm/cache.h> #include <linux/bug.h> #include <linux/string.h> #define KERNEL_DS ((mm_segment_t){0}) #define USER_DS ((mm_segment_t){1}) #define segment_eq(a, b) ((a).seg == (b).seg) #define get_ds() (KERNEL_DS) #define get_fs() (current_thread_info()->addr_limit) #define set_fs(x) (current_thread_info()->addr_limit = (x)) /* * Note that since kernel addresses are in a separate address space on * parisc, we don't need to do anything for access_ok(). * We just let the page fault handler do the right thing. This also means * that put_user is the same as __put_user, etc. */ #define access_ok(type, uaddr, size) \ ( (uaddr) == (uaddr) ) #define put_user __put_user #define get_user __get_user #if !defined(CONFIG_64BIT) #define LDD_USER(val, ptr) __get_user_asm64(val, ptr) #define STD_USER(x, ptr) __put_user_asm64(x, ptr) #else #define LDD_USER(val, ptr) __get_user_asm(val, "ldd", ptr) #define STD_USER(x, ptr) __put_user_asm("std", x, ptr) #endif /* * The exception table contains two values: the first is the relative offset to * the address of the instruction that is allowed to fault, and the second is * the relative offset to the address of the fixup routine. Since relative * addresses are used, 32bit values are sufficient even on 64bit kernel. */ #define ARCH_HAS_RELATIVE_EXTABLE struct exception_table_entry { int insn; /* relative address of insn that is allowed to fault. */ int fixup; /* relative address of fixup routine */ }; #define ASM_EXCEPTIONTABLE_ENTRY( fault_addr, except_addr )\ ".section __ex_table,\"aw\"\n" \ ".word (" #fault_addr " - .), (" #except_addr " - .)\n\t" \ ".previous\n" /* * ASM_EXCEPTIONTABLE_ENTRY_EFAULT() creates a special exception table entry * (with lowest bit set) for which the fault handler in fixup_exception() will * load -EFAULT into %r8 for a read or write fault, and zeroes the target * register in case of a read fault in get_user(). */ #define ASM_EXCEPTIONTABLE_ENTRY_EFAULT( fault_addr, except_addr )\ ASM_EXCEPTIONTABLE_ENTRY( fault_addr, except_addr + 1) /* * load_sr2() preloads the space register %%sr2 - based on the value of * get_fs() - with either a value of 0 to access kernel space (KERNEL_DS which * is 0), or with the current value of %%sr3 to access user space (USER_DS) * memory. The following __get_user_asm() and __put_user_asm() functions have * %%sr2 hard-coded to access the requested memory. */ #define load_sr2() \ __asm__(" or,= %0,%%r0,%%r0\n\t" \ " mfsp %%sr3,%0\n\t" \ " mtsp %0,%%sr2\n\t" \ : : "r"(get_fs()) : ) #define __get_user_internal(val, ptr) \ ({ \ register long __gu_err __asm__ ("r8") = 0; \ \ switch (sizeof(*(ptr))) { \ case 1: __get_user_asm(val, "ldb", ptr); break; \ case 2: __get_user_asm(val, "ldh", ptr); break; \ case 4: __get_user_asm(val, "ldw", ptr); break; \ case 8: LDD_USER(val, ptr); break; \ default: BUILD_BUG(); \ } \ \ __gu_err; \ }) #define __get_user(val, ptr) \ ({ \ load_sr2(); \ __get_user_internal(val, ptr); \ }) #define __get_user_asm(val, ldx, ptr) \ { \ register long __gu_val; \ \ __asm__("1: " ldx " 0(%%sr2,%2),%0\n" \ "9:\n" \ ASM_EXCEPTIONTABLE_ENTRY_EFAULT(1b, 9b) \ : "=r"(__gu_val), "=r"(__gu_err) \ : "r"(ptr), "1"(__gu_err)); \ \ (val) = (__force __typeof__(*(ptr))) __gu_val; \ } #if !defined(CONFIG_64BIT) #define __get_user_asm64(val, ptr) \ { \ union { \ unsigned long long l; \ __typeof__(*(ptr)) t; \ } __gu_tmp; \ \ __asm__(" copy %%r0,%R0\n" \ "1: ldw 0(%%sr2,%2),%0\n" \ "2: ldw 4(%%sr2,%2),%R0\n" \ "9:\n" \ ASM_EXCEPTIONTABLE_ENTRY_EFAULT(1b, 9b) \ ASM_EXCEPTIONTABLE_ENTRY_EFAULT(2b, 9b) \ : "=&r"(__gu_tmp.l), "=r"(__gu_err) \ : "r"(ptr), "1"(__gu_err)); \ \ (val) = __gu_tmp.t; \ } #endif /* !defined(CONFIG_64BIT) */ #define __put_user_internal(x, ptr) \ ({ \ register long __pu_err __asm__ ("r8") = 0; \ __typeof__(*(ptr)) __x = (__typeof__(*(ptr)))(x); \ \ switch (sizeof(*(ptr))) { \ case 1: __put_user_asm("stb", __x, ptr); break; \ case 2: __put_user_asm("sth", __x, ptr); break; \ case 4: __put_user_asm("stw", __x, ptr); break; \ case 8: STD_USER(__x, ptr); break; \ default: BUILD_BUG(); \ } \ \ __pu_err; \ }) #define __put_user(x, ptr) \ ({ \ load_sr2(); \ __put_user_internal(x, ptr); \ }) /* * The "__put_user/kernel_asm()" macros tell gcc they read from memory * instead of writing. This is because they do not write to any memory * gcc knows about, so there are no aliasing issues. These macros must * also be aware that fixups are executed in the context of the fault, * and any registers used there must be listed as clobbers. * r8 is already listed as err. */ #define __put_user_asm(stx, x, ptr) \ __asm__ __volatile__ ( \ "1: " stx " %2,0(%%sr2,%1)\n" \ "9:\n" \ ASM_EXCEPTIONTABLE_ENTRY_EFAULT(1b, 9b) \ : "=r"(__pu_err) \ : "r"(ptr), "r"(x), "0"(__pu_err)) #if !defined(CONFIG_64BIT) #define __put_user_asm64(__val, ptr) do { \ __asm__ __volatile__ ( \ "1: stw %2,0(%%sr2,%1)\n" \ "2: stw %R2,4(%%sr2,%1)\n" \ "9:\n" \ ASM_EXCEPTIONTABLE_ENTRY_EFAULT(1b, 9b) \ ASM_EXCEPTIONTABLE_ENTRY_EFAULT(2b, 9b) \ : "=r"(__pu_err) \ : "r"(ptr), "r"(__val), "0"(__pu_err)); \ } while (0) #endif /* !defined(CONFIG_64BIT) */ /* * Complex access routines -- external declarations */ extern long strncpy_from_user(char *, const char __user *, long); extern unsigned lclear_user(void __user *, unsigned long); extern long lstrnlen_user(const char __user *, long); /* * Complex access routines -- macros */ #define user_addr_max() (~0UL) #define strnlen_user lstrnlen_user #define clear_user lclear_user #define __clear_user lclear_user unsigned long __must_check raw_copy_to_user(void __user *dst, const void *src, unsigned long len); unsigned long __must_check raw_copy_from_user(void *dst, const void __user *src, unsigned long len); unsigned long __must_check raw_copy_in_user(void __user *dst, const void __user *src, unsigned long len); #define INLINE_COPY_TO_USER #define INLINE_COPY_FROM_USER struct pt_regs; int fixup_exception(struct pt_regs *regs); #endif /* __PARISC_UACCESS_H */