Файловый менеджер - Редактировать - /var/www/html/asm.zip
Ðазад
PK ! K� +1 1 unistd.hnu �[��� /* SPDX-License-Identifier: GPL-2.0 */ #ifndef _ALPHA_UNISTD_H #define _ALPHA_UNISTD_H #include <uapi/asm/unistd.h> #define NR_SYSCALLS __NR_syscalls #define __ARCH_WANT_NEW_STAT #define __ARCH_WANT_OLD_READDIR #define __ARCH_WANT_STAT64 #define __ARCH_WANT_SYS_GETHOSTNAME #define __ARCH_WANT_SYS_FADVISE64 #define __ARCH_WANT_SYS_GETPGRP #define __ARCH_WANT_SYS_OLDUMOUNT #define __ARCH_WANT_SYS_SIGPENDING #define __ARCH_WANT_SYS_UTIME #define __ARCH_WANT_SYS_FORK #define __ARCH_WANT_SYS_VFORK #define __ARCH_WANT_SYS_CLONE #endif /* _ALPHA_UNISTD_H */ PK ! t� -� � setup.hnu �[��� /* SPDX-License-Identifier: GPL-2.0-only */ #ifndef __ALPHA_SETUP_H #define __ALPHA_SETUP_H #include <uapi/asm/setup.h> /* * We leave one page for the initial stack page, and one page for * the initial process structure. Also, the console eats 3 MB for * the initial bootloader (one of which we can reclaim later). */ #define BOOT_PCB 0x20000000 #define BOOT_ADDR 0x20000000 /* Remove when official MILO sources have ELF support: */ #define BOOT_SIZE (16*1024) #ifdef CONFIG_ALPHA_LEGACY_START_ADDRESS #define KERNEL_START_PHYS 0x300000 /* Old bootloaders hardcoded this. */ #else #define KERNEL_START_PHYS 0x1000000 /* required: Wildfire/Titan/Marvel */ #endif #define KERNEL_START (PAGE_OFFSET+KERNEL_START_PHYS) #define SWAPPER_PGD KERNEL_START #define INIT_STACK (PAGE_OFFSET+KERNEL_START_PHYS+0x02000) #define EMPTY_PGT (PAGE_OFFSET+KERNEL_START_PHYS+0x04000) #define EMPTY_PGE (PAGE_OFFSET+KERNEL_START_PHYS+0x08000) #define ZERO_PGE (PAGE_OFFSET+KERNEL_START_PHYS+0x0A000) #define START_ADDR (PAGE_OFFSET+KERNEL_START_PHYS+0x10000) /* * This is setup by the secondary bootstrap loader. Because * the zero page is zeroed out as soon as the vm system is * initialized, we need to copy things out into a more permanent * place. */ #define PARAM ZERO_PGE #define COMMAND_LINE ((char *)(absolute_pointer(PARAM + 0x0000))) #define INITRD_START (*(unsigned long *) (PARAM+0x100)) #define INITRD_SIZE (*(unsigned long *) (PARAM+0x108)) #endif PK ! � ��� � Kbuildnu �[��� # SPDX-License-Identifier: GPL-2.0 generated-y += syscall_table.h generic-y += export.h generic-y += kvm_para.h generic-y += mcs_spinlock.h PK ! �^r�] ] page.hnu �[��� /* SPDX-License-Identifier: GPL-2.0 */ #ifndef _ALPHA_PAGE_H #define _ALPHA_PAGE_H #include <linux/const.h> #include <asm/pal.h> /* PAGE_SHIFT determines the page size */ #define PAGE_SHIFT 13 #define PAGE_SIZE (_AC(1,UL) << PAGE_SHIFT) #define PAGE_MASK (~(PAGE_SIZE-1)) #ifndef __ASSEMBLY__ #define STRICT_MM_TYPECHECKS extern void clear_page(void *page); #define clear_user_page(page, vaddr, pg) clear_page(page) #define alloc_zeroed_user_highpage_movable(vma, vaddr) \ alloc_page_vma(GFP_HIGHUSER_MOVABLE | __GFP_ZERO, vma, vaddr) #define __HAVE_ARCH_ALLOC_ZEROED_USER_HIGHPAGE_MOVABLE extern void copy_page(void * _to, void * _from); #define copy_user_page(to, from, vaddr, pg) copy_page(to, from) #ifdef STRICT_MM_TYPECHECKS /* * These are used to make use of C type-checking.. */ typedef struct { unsigned long pte; } pte_t; typedef struct { unsigned long pmd; } pmd_t; typedef struct { unsigned long pgd; } pgd_t; typedef struct { unsigned long pgprot; } pgprot_t; #define pte_val(x) ((x).pte) #define pmd_val(x) ((x).pmd) #define pgd_val(x) ((x).pgd) #define pgprot_val(x) ((x).pgprot) #define __pte(x) ((pte_t) { (x) } ) #define __pmd(x) ((pmd_t) { (x) } ) #define __pgd(x) ((pgd_t) { (x) } ) #define __pgprot(x) ((pgprot_t) { (x) } ) #else /* * .. while these make it easier on the compiler */ typedef unsigned long pte_t; typedef unsigned long pmd_t; typedef unsigned long pgd_t; typedef unsigned long pgprot_t; #define pte_val(x) (x) #define pmd_val(x) (x) #define pgd_val(x) (x) #define pgprot_val(x) (x) #define __pte(x) (x) #define __pgd(x) (x) #define __pgprot(x) (x) #endif /* STRICT_MM_TYPECHECKS */ typedef struct page *pgtable_t; #ifdef USE_48_BIT_KSEG #define PAGE_OFFSET 0xffff800000000000UL #else #define PAGE_OFFSET 0xfffffc0000000000UL #endif #else #ifdef USE_48_BIT_KSEG #define PAGE_OFFSET 0xffff800000000000 #else #define PAGE_OFFSET 0xfffffc0000000000 #endif #endif /* !__ASSEMBLY__ */ #define __pa(x) ((unsigned long) (x) - PAGE_OFFSET) #define __va(x) ((void *)((unsigned long) (x) + PAGE_OFFSET)) #define virt_to_page(kaddr) pfn_to_page(__pa(kaddr) >> PAGE_SHIFT) #define virt_addr_valid(kaddr) pfn_valid((__pa(kaddr) >> PAGE_SHIFT)) #ifdef CONFIG_FLATMEM #define pfn_valid(pfn) ((pfn) < max_mapnr) #endif /* CONFIG_FLATMEM */ #include <asm-generic/memory_model.h> #include <asm-generic/getorder.h> #endif /* _ALPHA_PAGE_H */ PK ! 9u��s s signal.hnu �[��� /* SPDX-License-Identifier: GPL-2.0 */ #ifndef _ASMAXP_SIGNAL_H #define _ASMAXP_SIGNAL_H #include <uapi/asm/signal.h> /* Digital Unix defines 64 signals. Most things should be clean enough to redefine this at will, if care is taken to make libc match. */ #define _NSIG 64 #define _NSIG_BPW 64 #define _NSIG_WORDS (_NSIG / _NSIG_BPW) typedef unsigned long old_sigset_t; /* at least 32 bits */ typedef struct { unsigned long sig[_NSIG_WORDS]; } sigset_t; struct osf_sigaction { __sighandler_t sa_handler; old_sigset_t sa_mask; int sa_flags; }; #define __ARCH_HAS_KA_RESTORER #include <asm/sigcontext.h> #endif PK ! ���o� � ptrace.hnu �[��� /* SPDX-License-Identifier: GPL-2.0 */ #ifndef _ASMAXP_PTRACE_H #define _ASMAXP_PTRACE_H #include <uapi/asm/ptrace.h> #define arch_has_single_step() (1) #define user_mode(regs) (((regs)->ps & 8) != 0) #define instruction_pointer(regs) ((regs)->pc) #define profile_pc(regs) instruction_pointer(regs) #define current_user_stack_pointer() rdusp() #define task_pt_regs(task) \ ((struct pt_regs *) (task_stack_page(task) + 2*PAGE_SIZE) - 1) #define current_pt_regs() \ ((struct pt_regs *) ((char *)current_thread_info() + 2*PAGE_SIZE) - 1) #define signal_pt_regs current_pt_regs #define force_successful_syscall_return() (current_pt_regs()->r0 = 0) static inline unsigned long regs_return_value(struct pt_regs *regs) { return regs->r0; } #endif PK ! Ӽ�4G G byteorder.hnu �[��� /* SPDX-License-Identifier: GPL-2.0-only WITH Linux-syscall-note */ /* * Copyright (C) 2012 ARM Ltd. * Copyright (C) 2015 Regents of the University of California */ #ifndef _UAPI_ASM_RISCV_BYTEORDER_H #define _UAPI_ASM_RISCV_BYTEORDER_H #include <linux/byteorder/little_endian.h> #endif /* _UAPI_ASM_RISCV_BYTEORDER_H */ PK ! ?��� sigcontext.hnu �[��� /* SPDX-License-Identifier: GPL-2.0-only WITH Linux-syscall-note */ /* * Copyright (C) 2012 Regents of the University of California */ #ifndef _UAPI_ASM_RISCV_SIGCONTEXT_H #define _UAPI_ASM_RISCV_SIGCONTEXT_H #include <asm/ptrace.h> /* * Signal context structure * * This contains the context saved before a signal handler is invoked; * it is restored by sys_sigreturn / sys_rt_sigreturn. */ struct sigcontext { struct user_regs_struct sc_regs; union __riscv_fp_state sc_fpregs; }; #endif /* _UAPI_ASM_RISCV_SIGCONTEXT_H */ PK ! ��� swab.hnu �[��� /* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */ #ifndef _ASM_IA64_SWAB_H #define _ASM_IA64_SWAB_H /* * Modified 1998, 1999 * David Mosberger-Tang <davidm@hpl.hp.com>, Hewlett-Packard Co. */ #include <linux/types.h> #include <asm/intrinsics.h> #include <linux/compiler.h> static __inline__ __attribute_const__ __u64 __arch_swab64(__u64 x) { __u64 result; result = ia64_mux1(x, ia64_mux1_rev); return result; } #define __arch_swab64 __arch_swab64 static __inline__ __attribute_const__ __u32 __arch_swab32(__u32 x) { return __arch_swab64(x) >> 32; } #define __arch_swab32 __arch_swab32 static __inline__ __attribute_const__ __u16 __arch_swab16(__u16 x) { return __arch_swab64(x) >> 48; } #define __arch_swab16 __arch_swab16 #endif /* _ASM_IA64_SWAB_H */ PK ! ��� � elf.hnu �[��� /* SPDX-License-Identifier: GPL-2.0 */ #ifndef __ASM_ALPHA_ELF_H #define __ASM_ALPHA_ELF_H #include <asm/auxvec.h> #include <asm/special_insns.h> /* Special values for the st_other field in the symbol table. */ #define STO_ALPHA_NOPV 0x80 #define STO_ALPHA_STD_GPLOAD 0x88 /* * Alpha ELF relocation types */ #define R_ALPHA_NONE 0 /* No reloc */ #define R_ALPHA_REFLONG 1 /* Direct 32 bit */ #define R_ALPHA_REFQUAD 2 /* Direct 64 bit */ #define R_ALPHA_GPREL32 3 /* GP relative 32 bit */ #define R_ALPHA_LITERAL 4 /* GP relative 16 bit w/optimization */ #define R_ALPHA_LITUSE 5 /* Optimization hint for LITERAL */ #define R_ALPHA_GPDISP 6 /* Add displacement to GP */ #define R_ALPHA_BRADDR 7 /* PC+4 relative 23 bit shifted */ #define R_ALPHA_HINT 8 /* PC+4 relative 16 bit shifted */ #define R_ALPHA_SREL16 9 /* PC relative 16 bit */ #define R_ALPHA_SREL32 10 /* PC relative 32 bit */ #define R_ALPHA_SREL64 11 /* PC relative 64 bit */ #define R_ALPHA_GPRELHIGH 17 /* GP relative 32 bit, high 16 bits */ #define R_ALPHA_GPRELLOW 18 /* GP relative 32 bit, low 16 bits */ #define R_ALPHA_GPREL16 19 /* GP relative 16 bit */ #define R_ALPHA_COPY 24 /* Copy symbol at runtime */ #define R_ALPHA_GLOB_DAT 25 /* Create GOT entry */ #define R_ALPHA_JMP_SLOT 26 /* Create PLT entry */ #define R_ALPHA_RELATIVE 27 /* Adjust by program base */ #define R_ALPHA_BRSGP 28 #define R_ALPHA_TLSGD 29 #define R_ALPHA_TLS_LDM 30 #define R_ALPHA_DTPMOD64 31 #define R_ALPHA_GOTDTPREL 32 #define R_ALPHA_DTPREL64 33 #define R_ALPHA_DTPRELHI 34 #define R_ALPHA_DTPRELLO 35 #define R_ALPHA_DTPREL16 36 #define R_ALPHA_GOTTPREL 37 #define R_ALPHA_TPREL64 38 #define R_ALPHA_TPRELHI 39 #define R_ALPHA_TPRELLO 40 #define R_ALPHA_TPREL16 41 #define SHF_ALPHA_GPREL 0x10000000 /* Legal values for e_flags field of Elf64_Ehdr. */ #define EF_ALPHA_32BIT 1 /* All addresses are below 2GB */ /* * ELF register definitions.. */ /* * The OSF/1 version of <sys/procfs.h> makes gregset_t 46 entries long. * I have no idea why that is so. For now, we just leave it at 33 * (32 general regs + processor status word). */ #define ELF_NGREG 33 #define ELF_NFPREG 32 typedef unsigned long elf_greg_t; typedef elf_greg_t elf_gregset_t[ELF_NGREG]; typedef double elf_fpreg_t; typedef elf_fpreg_t elf_fpregset_t[ELF_NFPREG]; /* * This is used to ensure we don't load something for the wrong architecture. */ #define elf_check_arch(x) (((x)->e_machine == EM_ALPHA) && !((x)->e_flags & EF_ALPHA_32BIT)) /* * These are used to set parameters in the core dumps. */ #define ELF_CLASS ELFCLASS64 #define ELF_DATA ELFDATA2LSB #define ELF_ARCH EM_ALPHA #define ELF_EXEC_PAGESIZE 8192 /* This is the location that an ET_DYN program is loaded if exec'ed. Typical use of this is to invoke "./ld.so someprog" to test out a new version of the loader. We need to make sure that it is out of the way of the program that it will "exec", and that there is sufficient room for the brk. */ #define ELF_ET_DYN_BASE (TASK_UNMAPPED_BASE + 0x1000000) /* $0 is set by ld.so to a pointer to a function which might be registered using atexit. This provides a mean for the dynamic linker to call DT_FINI functions for shared libraries that have been loaded before the code runs. So that we can use the same startup file with static executables, we start programs with a value of 0 to indicate that there is no such function. */ #define ELF_PLAT_INIT(_r, load_addr) _r->r0 = 0 /* The registers are laid out in pt_regs for PAL and syscall convenience. Re-order them for the linear elf_gregset_t. */ struct pt_regs; struct thread_info; struct task_struct; extern void dump_elf_thread(elf_greg_t *dest, struct pt_regs *pt, struct thread_info *ti); #define ELF_CORE_COPY_REGS(DEST, REGS) \ dump_elf_thread(DEST, REGS, current_thread_info()); /* Similar, but for a thread other than current. */ extern int dump_elf_task(elf_greg_t *dest, struct task_struct *task); #define ELF_CORE_COPY_TASK_REGS(TASK, DEST) \ dump_elf_task(*(DEST), TASK) /* Similar, but for the FP registers. */ extern int dump_elf_task_fp(elf_fpreg_t *dest, struct task_struct *task); #define ELF_CORE_COPY_FPREGS(TASK, DEST) \ dump_elf_task_fp(*(DEST), TASK) /* This yields a mask that user programs can use to figure out what instruction set this CPU supports. This is trivial on Alpha, but not so on other machines. */ #define ELF_HWCAP (~amask(-1)) /* This yields a string that ld.so will use to load implementation specific libraries for optimization. This is more specific in intent than poking at uname or /proc/cpuinfo. */ #define ELF_PLATFORM \ ({ \ enum implver_enum i_ = implver(); \ ( i_ == IMPLVER_EV4 ? "ev4" \ : i_ == IMPLVER_EV5 \ ? (amask(AMASK_BWX) ? "ev5" : "ev56") \ : amask (AMASK_CIX) ? "ev6" : "ev67"); \ }) extern int alpha_l1i_cacheshape; extern int alpha_l1d_cacheshape; extern int alpha_l2_cacheshape; extern int alpha_l3_cacheshape; /* update AT_VECTOR_SIZE_ARCH if the number of NEW_AUX_ENT entries changes */ #define ARCH_DLINFO \ do { \ NEW_AUX_ENT(AT_L1I_CACHESHAPE, alpha_l1i_cacheshape); \ NEW_AUX_ENT(AT_L1D_CACHESHAPE, alpha_l1d_cacheshape); \ NEW_AUX_ENT(AT_L2_CACHESHAPE, alpha_l2_cacheshape); \ NEW_AUX_ENT(AT_L3_CACHESHAPE, alpha_l3_cacheshape); \ } while (0) #endif /* __ASM_ALPHA_ELF_H */ PK ! �`�E cachectl.hnu �[��� /* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */ #ifndef __ASM_CSKY_CACHECTL_H #define __ASM_CSKY_CACHECTL_H /* * See "man cacheflush" */ #define ICACHE (1<<0) #define DCACHE (1<<1) #define BCACHE (ICACHE|DCACHE) #endif /* __ASM_CSKY_CACHECTL_H */ PK ! 2 msgbuf.hnu �[��� /* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */ #ifndef _ASM_MSGBUF_H #define _ASM_MSGBUF_H #include <asm/ipcbuf.h> /* * The msqid64_ds structure for the MIPS architecture. * Note extra padding because this structure is passed back and forth * between kernel and user space. * * Pad space is left for: * - 2 miscellaneous unsigned long values */ #if defined(__mips64) struct msqid64_ds { struct ipc64_perm msg_perm; long msg_stime; /* last msgsnd time */ long msg_rtime; /* last msgrcv time */ long msg_ctime; /* last change time */ unsigned long msg_cbytes; /* current number of bytes on queue */ unsigned long msg_qnum; /* number of messages in queue */ unsigned long msg_qbytes; /* max number of bytes on queue */ __kernel_pid_t msg_lspid; /* pid of last msgsnd */ __kernel_pid_t msg_lrpid; /* last receive pid */ unsigned long __unused4; unsigned long __unused5; }; #elif defined (__MIPSEB__) struct msqid64_ds { struct ipc64_perm msg_perm; unsigned long msg_stime_high; unsigned long msg_stime; /* last msgsnd time */ unsigned long msg_rtime_high; unsigned long msg_rtime; /* last msgrcv time */ unsigned long msg_ctime_high; unsigned long msg_ctime; /* last change time */ unsigned long msg_cbytes; /* current number of bytes on queue */ unsigned long msg_qnum; /* number of messages in queue */ unsigned long msg_qbytes; /* max number of bytes on queue */ __kernel_pid_t msg_lspid; /* pid of last msgsnd */ __kernel_pid_t msg_lrpid; /* last receive pid */ unsigned long __unused4; unsigned long __unused5; }; #elif defined (__MIPSEL__) struct msqid64_ds { struct ipc64_perm msg_perm; unsigned long msg_stime; /* last msgsnd time */ unsigned long msg_stime_high; unsigned long msg_rtime; /* last msgrcv time */ unsigned long msg_rtime_high; unsigned long msg_ctime; /* last change time */ unsigned long msg_ctime_high; unsigned long msg_cbytes; /* current number of bytes on queue */ unsigned long msg_qnum; /* number of messages in queue */ unsigned long msg_qbytes; /* max number of bytes on queue */ __kernel_pid_t msg_lspid; /* pid of last msgsnd */ __kernel_pid_t msg_lrpid; /* last receive pid */ unsigned long __unused4; unsigned long __unused5; }; #else #warning no endianess set #endif #endif /* _ASM_MSGBUF_H */ PK ! c��^� � ipcbuf.hnu �[��� /* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */ /* * include/asm-xtensa/ipcbuf.h * * The ipc64_perm structure for the Xtensa architecture. * Note extra padding because this structure is passed back and forth * between kernel and user space. * * Copyright (C) 2001 - 2005 Tensilica Inc. */ #ifndef _XTENSA_IPCBUF_H #define _XTENSA_IPCBUF_H #include <linux/posix_types.h> /* * Pad space is left for: * - 32-bit mode_t and seq * - 2 miscellaneous 32-bit values * * This file is subject to the terms and conditions of the GNU General * Public License. See the file "COPYING" in the main directory of * this archive for more details. */ struct ipc64_perm { __kernel_key_t key; __kernel_uid32_t uid; __kernel_gid32_t gid; __kernel_uid32_t cuid; __kernel_gid32_t cgid; __kernel_mode_t mode; unsigned long seq; unsigned long __unused1; unsigned long __unused2; }; #endif /* _XTENSA_IPCBUF_H */ PK ! �7�� � mman.hnu �[��� /* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */ /* * Based on <asm-i386/mman.h>. * * Modified 1998-2000, 2002 * David Mosberger-Tang <davidm@hpl.hp.com>, Hewlett-Packard Co */ #ifndef _UAPI_ASM_IA64_MMAN_H #define _UAPI_ASM_IA64_MMAN_H #include <asm-generic/mman.h> #define MAP_GROWSUP 0x0200 /* register stack-like segment */ #endif /* _UAPI_ASM_IA64_MMAN_H */ PK ! �7��7 7 sembuf.hnu �[��� /* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */ #ifndef _ASM_SEMBUF_H #define _ASM_SEMBUF_H #include <asm/ipcbuf.h> /* * The semid64_ds structure for the MIPS architecture. * Note extra padding because this structure is passed back and forth * between kernel and user space. * * Pad space is left for 2 miscellaneous 64-bit values on mips64, * but used for the upper 32 bit of the time values on mips32. */ #ifdef __mips64 struct semid64_ds { struct ipc64_perm sem_perm; /* permissions .. see ipc.h */ long sem_otime; /* last semop time */ long sem_ctime; /* last change time */ unsigned long sem_nsems; /* no. of semaphores in array */ unsigned long __unused1; unsigned long __unused2; }; #else struct semid64_ds { struct ipc64_perm sem_perm; /* permissions .. see ipc.h */ unsigned long sem_otime; /* last semop time */ unsigned long sem_ctime; /* last change time */ unsigned long sem_nsems; /* no. of semaphores in array */ unsigned long sem_otime_high; unsigned long sem_ctime_high; }; #endif #endif /* _ASM_SEMBUF_H */ PK ! |�^ posix_types.hnu �[��� /* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */ #ifndef _ASM_IA64_POSIX_TYPES_H #define _ASM_IA64_POSIX_TYPES_H typedef unsigned long __kernel_sigset_t; /* at least 32 bits */ #include <asm-generic/posix_types.h> #endif /* _ASM_IA64_POSIX_TYPES_H */ PK ! w�^� � types.hnu �[��� /* SPDX-License-Identifier: GPL-2.0 */ #ifndef _ALPHA_TYPES_H #define _ALPHA_TYPES_H #include <uapi/asm/types.h> #endif /* _ALPHA_TYPES_H */ PK ! �ة param.hnu �[��� /* SPDX-License-Identifier: GPL-2.0 */ #ifndef _ASM_ALPHA_PARAM_H #define _ASM_ALPHA_PARAM_H #include <uapi/asm/param.h> # undef HZ # define HZ CONFIG_HZ # define USER_HZ 1024 # define CLOCKS_PER_SEC USER_HZ /* frequency at which times() counts */ #endif /* _ASM_ALPHA_PARAM_H */ PK ! �ʻ� sockios.hnu �[��� /* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */ /* * Socket-level I/O control calls. * * This file is subject to the terms and conditions of the GNU General Public * License. See the file "COPYING" in the main directory of this archive * for more details. * * Copyright (C) 1995 by Ralf Baechle */ #ifndef _ASM_SOCKIOS_H #define _ASM_SOCKIOS_H #include <asm/ioctl.h> /* Socket-level I/O control calls. */ #define FIOGETOWN _IOR('f', 123, int) #define FIOSETOWN _IOW('f', 124, int) #define SIOCATMARK _IOR('s', 7, int) #define SIOCSPGRP _IOW('s', 8, pid_t) #define SIOCGPGRP _IOR('s', 9, pid_t) #define SIOCGSTAMP_OLD 0x8906 /* Get stamp (timeval) */ #define SIOCGSTAMPNS_OLD 0x8907 /* Get stamp (timespec) */ #endif /* _ASM_SOCKIOS_H */ PK ! W��� � poll.hnu �[��� /* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */ #ifndef __ASM_POLL_H #define __ASM_POLL_H #define POLLWRNORM POLLOUT #define POLLWRBAND 0x0100 #include <asm-generic/poll.h> #endif /* __ASM_POLL_H */ PK ! ��Yg g stat.hnu �[��� /* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */ #ifndef _ASM_IA64_STAT_H #define _ASM_IA64_STAT_H /* * Modified 1998, 1999 * David Mosberger-Tang <davidm@hpl.hp.com>, Hewlett-Packard Co */ struct stat { unsigned long st_dev; unsigned long st_ino; unsigned long st_nlink; unsigned int st_mode; unsigned int st_uid; unsigned int st_gid; unsigned int __pad0; unsigned long st_rdev; unsigned long st_size; unsigned long st_atime; unsigned long st_atime_nsec; unsigned long st_mtime; unsigned long st_mtime_nsec; unsigned long st_ctime; unsigned long st_ctime_nsec; unsigned long st_blksize; long st_blocks; unsigned long __unused[3]; }; #define STAT_HAVE_NSEC 1 struct ia64_oldstat { unsigned int st_dev; unsigned int st_ino; unsigned int st_mode; unsigned int st_nlink; unsigned int st_uid; unsigned int st_gid; unsigned int st_rdev; unsigned int __pad1; unsigned long st_size; unsigned long st_atime; unsigned long st_mtime; unsigned long st_ctime; unsigned int st_blksize; int st_blocks; unsigned int __unused1; unsigned int __unused2; }; #endif /* _ASM_IA64_STAT_H */ PK ! ��� � ioctls.hnu �[��� /* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */ /* * This file is subject to the terms and conditions of the GNU General Public * License. See the file "COPYING" in the main directory of this archive * for more details. * * Copyright (C) 1995, 1996, 2001 Ralf Baechle * Copyright (C) 2001 MIPS Technologies, Inc. */ #ifndef __ASM_IOCTLS_H #define __ASM_IOCTLS_H #include <asm/ioctl.h> #define TCGETA 0x5401 #define TCSETA 0x5402 /* Clashes with SNDCTL_TMR_START sound ioctl */ #define TCSETAW 0x5403 #define TCSETAF 0x5404 #define TCSBRK 0x5405 #define TCXONC 0x5406 #define TCFLSH 0x5407 #define TCGETS 0x540d #define TCSETS 0x540e #define TCSETSW 0x540f #define TCSETSF 0x5410 #define TIOCEXCL 0x740d /* set exclusive use of tty */ #define TIOCNXCL 0x740e /* reset exclusive use of tty */ #define TIOCOUTQ 0x7472 /* output queue size */ #define TIOCSTI 0x5472 /* simulate terminal input */ #define TIOCMGET 0x741d /* get all modem bits */ #define TIOCMBIS 0x741b /* bis modem bits */ #define TIOCMBIC 0x741c /* bic modem bits */ #define TIOCMSET 0x741a /* set all modem bits */ #define TIOCPKT 0x5470 /* pty: set/clear packet mode */ #define TIOCPKT_DATA 0x00 /* data packet */ #define TIOCPKT_FLUSHREAD 0x01 /* flush packet */ #define TIOCPKT_FLUSHWRITE 0x02 /* flush packet */ #define TIOCPKT_STOP 0x04 /* stop output */ #define TIOCPKT_START 0x08 /* start output */ #define TIOCPKT_NOSTOP 0x10 /* no more ^S, ^Q */ #define TIOCPKT_DOSTOP 0x20 /* now do ^S ^Q */ #define TIOCPKT_IOCTL 0x40 /* state change of pty driver */ #define TIOCSWINSZ _IOW('t', 103, struct winsize) /* set window size */ #define TIOCGWINSZ _IOR('t', 104, struct winsize) /* get window size */ #define TIOCNOTTY 0x5471 /* void tty association */ #define TIOCSETD 0x7401 #define TIOCGETD 0x7400 #define FIOCLEX 0x6601 #define FIONCLEX 0x6602 #define FIOASYNC 0x667d #define FIONBIO 0x667e #define FIOQSIZE 0x667f #define TIOCGLTC 0x7474 /* get special local chars */ #define TIOCSLTC 0x7475 /* set special local chars */ #define TIOCSPGRP _IOW('t', 118, int) /* set pgrp of tty */ #define TIOCGPGRP _IOR('t', 119, int) /* get pgrp of tty */ #define TIOCCONS _IOW('t', 120, int) /* become virtual console */ #define FIONREAD 0x467f #define TIOCINQ FIONREAD #define TIOCGETP 0x7408 #define TIOCSETP 0x7409 #define TIOCSETN 0x740a /* TIOCSETP wo flush */ /* #define TIOCSETA _IOW('t', 20, struct termios) set termios struct */ /* #define TIOCSETAW _IOW('t', 21, struct termios) drain output, set */ /* #define TIOCSETAF _IOW('t', 22, struct termios) drn out, fls in, set */ /* #define TIOCGETD _IOR('t', 26, int) get line discipline */ /* #define TIOCSETD _IOW('t', 27, int) set line discipline */ /* 127-124 compat */ #define TIOCSBRK 0x5427 /* BSD compatibility */ #define TIOCCBRK 0x5428 /* BSD compatibility */ #define TIOCGSID 0x7416 /* Return the session ID of FD */ #define TCGETS2 _IOR('T', 0x2A, struct termios2) #define TCSETS2 _IOW('T', 0x2B, struct termios2) #define TCSETSW2 _IOW('T', 0x2C, struct termios2) #define TCSETSF2 _IOW('T', 0x2D, struct termios2) #define TIOCGRS485 _IOR('T', 0x2E, struct serial_rs485) #define TIOCSRS485 _IOWR('T', 0x2F, struct serial_rs485) #define TIOCGPTN _IOR('T', 0x30, unsigned int) /* Get Pty Number (of pty-mux device) */ #define TIOCSPTLCK _IOW('T', 0x31, int) /* Lock/unlock Pty */ #define TIOCGDEV _IOR('T', 0x32, unsigned int) /* Get primary device node of /dev/console */ #define TIOCSIG _IOW('T', 0x36, int) /* Generate signal on Pty slave */ #define TIOCVHANGUP 0x5437 #define TIOCGPKT _IOR('T', 0x38, int) /* Get packet mode state */ #define TIOCGPTLCK _IOR('T', 0x39, int) /* Get Pty lock state */ #define TIOCGEXCL _IOR('T', 0x40, int) /* Get exclusive mode state */ #define TIOCGPTPEER _IO('T', 0x41) /* Safely open the slave */ #define TIOCGISO7816 _IOR('T', 0x42, struct serial_iso7816) #define TIOCSISO7816 _IOWR('T', 0x43, struct serial_iso7816) /* I hope the range from 0x5480 on is free ... */ #define TIOCSCTTY 0x5480 /* become controlling tty */ #define TIOCGSOFTCAR 0x5481 #define TIOCSSOFTCAR 0x5482 #define TIOCLINUX 0x5483 #define TIOCGSERIAL 0x5484 #define TIOCSSERIAL 0x5485 #define TCSBRKP 0x5486 /* Needed for POSIX tcsendbreak() */ #define TIOCSERCONFIG 0x5488 #define TIOCSERGWILD 0x5489 #define TIOCSERSWILD 0x548a #define TIOCGLCKTRMIOS 0x548b #define TIOCSLCKTRMIOS 0x548c #define TIOCSERGSTRUCT 0x548d /* For debugging only */ #define TIOCSERGETLSR 0x548e /* Get line status register */ #define TIOCSERGETMULTI 0x548f /* Get multiport config */ #define TIOCSERSETMULTI 0x5490 /* Set multiport config */ #define TIOCMIWAIT 0x5491 /* wait for a change on serial input line(s) */ #define TIOCGICOUNT 0x5492 /* read serial port inline interrupt counts */ #endif /* __ASM_IOCTLS_H */ PK ! ��E�K K shmbuf.hnu �[��� /* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */ #ifndef _ASM_SHMBUF_H #define _ASM_SHMBUF_H /* * The shmid64_ds structure for the MIPS architecture. * Note extra padding because this structure is passed back and forth * between kernel and user space. * * As MIPS was lacking proper padding after shm_?time, we use 48 bits * of the padding at the end to store a few additional bits of the time. * libc implementations need to take care to convert this into a proper * data structure when moving to 64-bit time_t. */ #ifdef __mips64 struct shmid64_ds { struct ipc64_perm shm_perm; /* operation perms */ size_t shm_segsz; /* size of segment (bytes) */ long shm_atime; /* last attach time */ long shm_dtime; /* last detach time */ long shm_ctime; /* last change time */ __kernel_pid_t shm_cpid; /* pid of creator */ __kernel_pid_t shm_lpid; /* pid of last operator */ unsigned long shm_nattch; /* no. of current attaches */ unsigned long __unused1; unsigned long __unused2; }; #else struct shmid64_ds { struct ipc64_perm shm_perm; /* operation perms */ size_t shm_segsz; /* size of segment (bytes) */ unsigned long shm_atime; /* last attach time */ unsigned long shm_dtime; /* last detach time */ unsigned long shm_ctime; /* last change time */ __kernel_pid_t shm_cpid; /* pid of creator */ __kernel_pid_t shm_lpid; /* pid of last operator */ unsigned long shm_nattch; /* no. of current attaches */ unsigned short shm_atime_high; unsigned short shm_dtime_high; unsigned short shm_ctime_high; unsigned short __unused1; }; #endif struct shminfo64 { unsigned long shmmax; unsigned long shmmin; unsigned long shmmni; unsigned long shmseg; unsigned long shmall; unsigned long __unused1; unsigned long __unused2; unsigned long __unused3; unsigned long __unused4; }; #endif /* _ASM_SHMBUF_H */ PK ! ��ʎy y auxvec.hnu �[��� /* SPDX-License-Identifier: GPL-2.0-only WITH Linux-syscall-note */ /* * Copyright (C) 2012 ARM Ltd. * Copyright (C) 2015 Regents of the University of California */ #ifndef _UAPI_ASM_RISCV_AUXVEC_H #define _UAPI_ASM_RISCV_AUXVEC_H /* vDSO location */ #define AT_SYSINFO_EHDR 33 /* * The set of entries below represent more extensive information * about the caches, in the form of two entry per cache type, * one entry containing the cache size in bytes, and the other * containing the cache line size in bytes in the bottom 16 bits * and the cache associativity in the next 16 bits. * * The associativity is such that if N is the 16-bit value, the * cache is N way set associative. A value if 0xffff means fully * associative, a value of 1 means directly mapped. * * For all these fields, a value of 0 means that the information * is not known. */ #define AT_L1I_CACHESIZE 40 #define AT_L1I_CACHEGEOMETRY 41 #define AT_L1D_CACHESIZE 42 #define AT_L1D_CACHEGEOMETRY 43 #define AT_L2_CACHESIZE 44 #define AT_L2_CACHEGEOMETRY 45 /* entries in ARCH_DLINFO */ #define AT_VECTOR_SIZE_ARCH 7 #endif /* _UAPI_ASM_RISCV_AUXVEC_H */ PK ! @n�s termbits.hnu �[��� /* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */ #ifndef _ASM_IA64_TERMBITS_H #define _ASM_IA64_TERMBITS_H /* * Based on <asm-i386/termbits.h>. * * Modified 1999 * David Mosberger-Tang <davidm@hpl.hp.com>, Hewlett-Packard Co * * 99/01/28 Added new baudrates */ #include <linux/posix_types.h> typedef unsigned char cc_t; typedef unsigned int speed_t; typedef unsigned int tcflag_t; #define NCCS 19 struct termios { tcflag_t c_iflag; /* input mode flags */ tcflag_t c_oflag; /* output mode flags */ tcflag_t c_cflag; /* control mode flags */ tcflag_t c_lflag; /* local mode flags */ cc_t c_line; /* line discipline */ cc_t c_cc[NCCS]; /* control characters */ }; struct termios2 { tcflag_t c_iflag; /* input mode flags */ tcflag_t c_oflag; /* output mode flags */ tcflag_t c_cflag; /* control mode flags */ tcflag_t c_lflag; /* local mode flags */ cc_t c_line; /* line discipline */ cc_t c_cc[NCCS]; /* control characters */ speed_t c_ispeed; /* input speed */ speed_t c_ospeed; /* output speed */ }; struct ktermios { tcflag_t c_iflag; /* input mode flags */ tcflag_t c_oflag; /* output mode flags */ tcflag_t c_cflag; /* control mode flags */ tcflag_t c_lflag; /* local mode flags */ cc_t c_line; /* line discipline */ cc_t c_cc[NCCS]; /* control characters */ speed_t c_ispeed; /* input speed */ speed_t c_ospeed; /* output speed */ }; /* c_cc characters */ #define VINTR 0 #define VQUIT 1 #define VERASE 2 #define VKILL 3 #define VEOF 4 #define VTIME 5 #define VMIN 6 #define VSWTC 7 #define VSTART 8 #define VSTOP 9 #define VSUSP 10 #define VEOL 11 #define VREPRINT 12 #define VDISCARD 13 #define VWERASE 14 #define VLNEXT 15 #define VEOL2 16 /* c_iflag bits */ #define IGNBRK 0000001 #define BRKINT 0000002 #define IGNPAR 0000004 #define PARMRK 0000010 #define INPCK 0000020 #define ISTRIP 0000040 #define INLCR 0000100 #define IGNCR 0000200 #define ICRNL 0000400 #define IUCLC 0001000 #define IXON 0002000 #define IXANY 0004000 #define IXOFF 0010000 #define IMAXBEL 0020000 #define IUTF8 0040000 /* c_oflag bits */ #define OPOST 0000001 #define OLCUC 0000002 #define ONLCR 0000004 #define OCRNL 0000010 #define ONOCR 0000020 #define ONLRET 0000040 #define OFILL 0000100 #define OFDEL 0000200 #define NLDLY 0000400 #define NL0 0000000 #define NL1 0000400 #define CRDLY 0003000 #define CR0 0000000 #define CR1 0001000 #define CR2 0002000 #define CR3 0003000 #define TABDLY 0014000 #define TAB0 0000000 #define TAB1 0004000 #define TAB2 0010000 #define TAB3 0014000 #define XTABS 0014000 #define BSDLY 0020000 #define BS0 0000000 #define BS1 0020000 #define VTDLY 0040000 #define VT0 0000000 #define VT1 0040000 #define FFDLY 0100000 #define FF0 0000000 #define FF1 0100000 /* c_cflag bit meaning */ #define CBAUD 0010017 #define B0 0000000 /* hang up */ #define B50 0000001 #define B75 0000002 #define B110 0000003 #define B134 0000004 #define B150 0000005 #define B200 0000006 #define B300 0000007 #define B600 0000010 #define B1200 0000011 #define B1800 0000012 #define B2400 0000013 #define B4800 0000014 #define B9600 0000015 #define B19200 0000016 #define B38400 0000017 #define EXTA B19200 #define EXTB B38400 #define CSIZE 0000060 #define CS5 0000000 #define CS6 0000020 #define CS7 0000040 #define CS8 0000060 #define CSTOPB 0000100 #define CREAD 0000200 #define PARENB 0000400 #define PARODD 0001000 #define HUPCL 0002000 #define CLOCAL 0004000 #define CBAUDEX 0010000 #define BOTHER 0010000 #define B57600 0010001 #define B115200 0010002 #define B230400 0010003 #define B460800 0010004 #define B500000 0010005 #define B576000 0010006 #define B921600 0010007 #define B1000000 0010010 #define B1152000 0010011 #define B1500000 0010012 #define B2000000 0010013 #define B2500000 0010014 #define B3000000 0010015 #define B3500000 0010016 #define B4000000 0010017 #define CIBAUD 002003600000 /* input baud rate */ #define CMSPAR 010000000000 /* mark or space (stick) parity */ #define CRTSCTS 020000000000 /* flow control */ #define IBSHIFT 16 /* Shift from CBAUD to CIBAUD */ /* c_lflag bits */ #define ISIG 0000001 #define ICANON 0000002 #define XCASE 0000004 #define ECHO 0000010 #define ECHOE 0000020 #define ECHOK 0000040 #define ECHONL 0000100 #define NOFLSH 0000200 #define TOSTOP 0000400 #define ECHOCTL 0001000 #define ECHOPRT 0002000 #define ECHOKE 0004000 #define FLUSHO 0010000 #define PENDIN 0040000 #define IEXTEN 0100000 #define EXTPROC 0200000 /* tcflow() and TCXONC use these */ #define TCOOFF 0 #define TCOON 1 #define TCIOFF 2 #define TCION 3 /* tcflush() and TCFLSH use these */ #define TCIFLUSH 0 #define TCOFLUSH 1 #define TCIOFLUSH 2 /* tcsetattr uses these */ #define TCSANOW 0 #define TCSADRAIN 1 #define TCSAFLUSH 2 #endif /* _ASM_IA64_TERMBITS_H */ PK ! �R�� � break.hnu �[��� /* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */ #ifndef _ASM_IA64_BREAK_H #define _ASM_IA64_BREAK_H /* * IA-64 Linux break numbers. * * Copyright (C) 1999 Hewlett-Packard Co * Copyright (C) 1999 David Mosberger-Tang <davidm@hpl.hp.com> */ /* * OS-specific debug break numbers: */ #define __IA64_BREAK_KDB 0x80100 #define __IA64_BREAK_KPROBE 0x81000 /* .. 0x81fff */ /* * OS-specific break numbers: */ #define __IA64_BREAK_SYSCALL 0x100000 #endif /* _ASM_IA64_BREAK_H */ PK ! W̢� � cmpxchg.hnu �[��� /* SPDX-License-Identifier: GPL-2.0 */ #ifndef _ALPHA_CMPXCHG_H #define _ALPHA_CMPXCHG_H /* * Atomic exchange routines. */ #define ____xchg(type, args...) __xchg ## type ## _local(args) #define ____cmpxchg(type, args...) __cmpxchg ## type ## _local(args) #include <asm/xchg.h> #define xchg_local(ptr, x) \ ({ \ __typeof__(*(ptr)) _x_ = (x); \ (__typeof__(*(ptr))) __xchg_local((ptr), (unsigned long)_x_, \ sizeof(*(ptr))); \ }) #define arch_cmpxchg_local(ptr, o, n) \ ({ \ __typeof__(*(ptr)) _o_ = (o); \ __typeof__(*(ptr)) _n_ = (n); \ (__typeof__(*(ptr))) __cmpxchg_local((ptr), (unsigned long)_o_, \ (unsigned long)_n_, \ sizeof(*(ptr))); \ }) #define arch_cmpxchg64_local(ptr, o, n) \ ({ \ BUILD_BUG_ON(sizeof(*(ptr)) != 8); \ cmpxchg_local((ptr), (o), (n)); \ }) #undef ____xchg #undef ____cmpxchg #define ____xchg(type, args...) __xchg ##type(args) #define ____cmpxchg(type, args...) __cmpxchg ##type(args) #include <asm/xchg.h> /* * The leading and the trailing memory barriers guarantee that these * operations are fully ordered. */ #define arch_xchg(ptr, x) \ ({ \ __typeof__(*(ptr)) __ret; \ __typeof__(*(ptr)) _x_ = (x); \ smp_mb(); \ __ret = (__typeof__(*(ptr))) \ __xchg((ptr), (unsigned long)_x_, sizeof(*(ptr))); \ smp_mb(); \ __ret; \ }) #define arch_cmpxchg(ptr, o, n) \ ({ \ __typeof__(*(ptr)) __ret; \ __typeof__(*(ptr)) _o_ = (o); \ __typeof__(*(ptr)) _n_ = (n); \ smp_mb(); \ __ret = (__typeof__(*(ptr))) __cmpxchg((ptr), \ (unsigned long)_o_, (unsigned long)_n_, sizeof(*(ptr)));\ smp_mb(); \ __ret; \ }) #define arch_cmpxchg64(ptr, o, n) \ ({ \ BUILD_BUG_ON(sizeof(*(ptr)) != 8); \ arch_cmpxchg((ptr), (o), (n)); \ }) #undef ____cmpxchg #endif /* _ALPHA_CMPXCHG_H */ PK ! �N�� � rse.hnu �[��� /* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */ #ifndef _ASM_IA64_RSE_H #define _ASM_IA64_RSE_H /* * Copyright (C) 1998, 1999 Hewlett-Packard Co * Copyright (C) 1998, 1999 David Mosberger-Tang <davidm@hpl.hp.com> * * Register stack engine related helper functions. This file may be * used in applications, so be careful about the name-space and give * some consideration to non-GNU C compilers (though __inline__ is * fine). */ static __inline__ unsigned long ia64_rse_slot_num (unsigned long *addr) { return (((unsigned long) addr) >> 3) & 0x3f; } /* * Return TRUE if ADDR is the address of an RNAT slot. */ static __inline__ unsigned long ia64_rse_is_rnat_slot (unsigned long *addr) { return ia64_rse_slot_num(addr) == 0x3f; } /* * Returns the address of the RNAT slot that covers the slot at * address SLOT_ADDR. */ static __inline__ unsigned long * ia64_rse_rnat_addr (unsigned long *slot_addr) { return (unsigned long *) ((unsigned long) slot_addr | (0x3f << 3)); } /* * Calculate the number of registers in the dirty partition starting at BSPSTORE and * ending at BSP. This isn't simply (BSP-BSPSTORE)/8 because every 64th slot stores * ar.rnat. */ static __inline__ unsigned long ia64_rse_num_regs (unsigned long *bspstore, unsigned long *bsp) { unsigned long slots = (bsp - bspstore); return slots - (ia64_rse_slot_num(bspstore) + slots)/0x40; } /* * The inverse of the above: given bspstore and the number of * registers, calculate ar.bsp. */ static __inline__ unsigned long * ia64_rse_skip_regs (unsigned long *addr, long num_regs) { long delta = ia64_rse_slot_num(addr) + num_regs; if (num_regs < 0) delta -= 0x3e; return addr + num_regs + delta/0x3f; } #endif /* _ASM_IA64_RSE_H */ PK ! :-��G �G gcc_intrin.hnu �[��� /* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */ /* * * Copyright (C) 2002,2003 Jun Nakajima <jun.nakajima@intel.com> * Copyright (C) 2002,2003 Suresh Siddha <suresh.b.siddha@intel.com> */ #ifndef _UAPI_ASM_IA64_GCC_INTRIN_H #define _UAPI_ASM_IA64_GCC_INTRIN_H #include <linux/types.h> #include <linux/compiler.h> /* define this macro to get some asm stmts included in 'c' files */ #define ASM_SUPPORTED /* Optimization barrier */ /* The "volatile" is due to gcc bugs */ #define ia64_barrier() asm volatile ("":::"memory") #define ia64_stop() asm volatile (";;"::) #define ia64_invala_gr(regnum) asm volatile ("invala.e r%0" :: "i"(regnum)) #define ia64_invala_fr(regnum) asm volatile ("invala.e f%0" :: "i"(regnum)) #define ia64_flushrs() asm volatile ("flushrs;;":::"memory") #define ia64_loadrs() asm volatile ("loadrs;;":::"memory") extern void ia64_bad_param_for_setreg (void); extern void ia64_bad_param_for_getreg (void); #define ia64_setreg(regnum, val) \ ({ \ switch (regnum) { \ case _IA64_REG_PSR_L: \ asm volatile ("mov psr.l=%0" :: "r"(val) : "memory"); \ break; \ case _IA64_REG_AR_KR0 ... _IA64_REG_AR_EC: \ asm volatile ("mov ar%0=%1" :: \ "i" (regnum - _IA64_REG_AR_KR0), \ "r"(val): "memory"); \ break; \ case _IA64_REG_CR_DCR ... _IA64_REG_CR_LRR1: \ asm volatile ("mov cr%0=%1" :: \ "i" (regnum - _IA64_REG_CR_DCR), \ "r"(val): "memory" ); \ break; \ case _IA64_REG_SP: \ asm volatile ("mov r12=%0" :: \ "r"(val): "memory"); \ break; \ case _IA64_REG_GP: \ asm volatile ("mov gp=%0" :: "r"(val) : "memory"); \ break; \ default: \ ia64_bad_param_for_setreg(); \ break; \ } \ }) #define ia64_getreg(regnum) \ ({ \ __u64 ia64_intri_res; \ \ switch (regnum) { \ case _IA64_REG_GP: \ asm volatile ("mov %0=gp" : "=r"(ia64_intri_res)); \ break; \ case _IA64_REG_IP: \ asm volatile ("mov %0=ip" : "=r"(ia64_intri_res)); \ break; \ case _IA64_REG_PSR: \ asm volatile ("mov %0=psr" : "=r"(ia64_intri_res)); \ break; \ case _IA64_REG_TP: /* for current() */ \ ia64_intri_res = ia64_r13; \ break; \ case _IA64_REG_AR_KR0 ... _IA64_REG_AR_EC: \ asm volatile ("mov %0=ar%1" : "=r" (ia64_intri_res) \ : "i"(regnum - _IA64_REG_AR_KR0)); \ break; \ case _IA64_REG_CR_DCR ... _IA64_REG_CR_LRR1: \ asm volatile ("mov %0=cr%1" : "=r" (ia64_intri_res) \ : "i" (regnum - _IA64_REG_CR_DCR)); \ break; \ case _IA64_REG_SP: \ asm volatile ("mov %0=sp" : "=r" (ia64_intri_res)); \ break; \ default: \ ia64_bad_param_for_getreg(); \ break; \ } \ ia64_intri_res; \ }) #define ia64_hint_pause 0 #define ia64_hint(mode) \ ({ \ switch (mode) { \ case ia64_hint_pause: \ asm volatile ("hint @pause" ::: "memory"); \ break; \ } \ }) /* Integer values for mux1 instruction */ #define ia64_mux1_brcst 0 #define ia64_mux1_mix 8 #define ia64_mux1_shuf 9 #define ia64_mux1_alt 10 #define ia64_mux1_rev 11 #define ia64_mux1(x, mode) \ ({ \ __u64 ia64_intri_res; \ \ switch (mode) { \ case ia64_mux1_brcst: \ asm ("mux1 %0=%1,@brcst" : "=r" (ia64_intri_res) : "r" (x)); \ break; \ case ia64_mux1_mix: \ asm ("mux1 %0=%1,@mix" : "=r" (ia64_intri_res) : "r" (x)); \ break; \ case ia64_mux1_shuf: \ asm ("mux1 %0=%1,@shuf" : "=r" (ia64_intri_res) : "r" (x)); \ break; \ case ia64_mux1_alt: \ asm ("mux1 %0=%1,@alt" : "=r" (ia64_intri_res) : "r" (x)); \ break; \ case ia64_mux1_rev: \ asm ("mux1 %0=%1,@rev" : "=r" (ia64_intri_res) : "r" (x)); \ break; \ } \ ia64_intri_res; \ }) #if __GNUC__ >= 4 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 4) # define ia64_popcnt(x) __builtin_popcountl(x) #else # define ia64_popcnt(x) \ ({ \ __u64 ia64_intri_res; \ asm ("popcnt %0=%1" : "=r" (ia64_intri_res) : "r" (x)); \ \ ia64_intri_res; \ }) #endif #define ia64_getf_exp(x) \ ({ \ long ia64_intri_res; \ \ asm ("getf.exp %0=%1" : "=r"(ia64_intri_res) : "f"(x)); \ \ ia64_intri_res; \ }) #define ia64_shrp(a, b, count) \ ({ \ __u64 ia64_intri_res; \ asm ("shrp %0=%1,%2,%3" : "=r"(ia64_intri_res) : "r"(a), "r"(b), "i"(count)); \ ia64_intri_res; \ }) #define ia64_ldfs(regnum, x) \ ({ \ register double __f__ asm ("f"#regnum); \ asm volatile ("ldfs %0=[%1]" :"=f"(__f__): "r"(x)); \ }) #define ia64_ldfd(regnum, x) \ ({ \ register double __f__ asm ("f"#regnum); \ asm volatile ("ldfd %0=[%1]" :"=f"(__f__): "r"(x)); \ }) #define ia64_ldfe(regnum, x) \ ({ \ register double __f__ asm ("f"#regnum); \ asm volatile ("ldfe %0=[%1]" :"=f"(__f__): "r"(x)); \ }) #define ia64_ldf8(regnum, x) \ ({ \ register double __f__ asm ("f"#regnum); \ asm volatile ("ldf8 %0=[%1]" :"=f"(__f__): "r"(x)); \ }) #define ia64_ldf_fill(regnum, x) \ ({ \ register double __f__ asm ("f"#regnum); \ asm volatile ("ldf.fill %0=[%1]" :"=f"(__f__): "r"(x)); \ }) #define ia64_st4_rel_nta(m, val) \ ({ \ asm volatile ("st4.rel.nta [%0] = %1\n\t" :: "r"(m), "r"(val)); \ }) #define ia64_stfs(x, regnum) \ ({ \ register double __f__ asm ("f"#regnum); \ asm volatile ("stfs [%0]=%1" :: "r"(x), "f"(__f__) : "memory"); \ }) #define ia64_stfd(x, regnum) \ ({ \ register double __f__ asm ("f"#regnum); \ asm volatile ("stfd [%0]=%1" :: "r"(x), "f"(__f__) : "memory"); \ }) #define ia64_stfe(x, regnum) \ ({ \ register double __f__ asm ("f"#regnum); \ asm volatile ("stfe [%0]=%1" :: "r"(x), "f"(__f__) : "memory"); \ }) #define ia64_stf8(x, regnum) \ ({ \ register double __f__ asm ("f"#regnum); \ asm volatile ("stf8 [%0]=%1" :: "r"(x), "f"(__f__) : "memory"); \ }) #define ia64_stf_spill(x, regnum) \ ({ \ register double __f__ asm ("f"#regnum); \ asm volatile ("stf.spill [%0]=%1" :: "r"(x), "f"(__f__) : "memory"); \ }) #define ia64_fetchadd4_acq(p, inc) \ ({ \ \ __u64 ia64_intri_res; \ asm volatile ("fetchadd4.acq %0=[%1],%2" \ : "=r"(ia64_intri_res) : "r"(p), "i" (inc) \ : "memory"); \ \ ia64_intri_res; \ }) #define ia64_fetchadd4_rel(p, inc) \ ({ \ __u64 ia64_intri_res; \ asm volatile ("fetchadd4.rel %0=[%1],%2" \ : "=r"(ia64_intri_res) : "r"(p), "i" (inc) \ : "memory"); \ \ ia64_intri_res; \ }) #define ia64_fetchadd8_acq(p, inc) \ ({ \ \ __u64 ia64_intri_res; \ asm volatile ("fetchadd8.acq %0=[%1],%2" \ : "=r"(ia64_intri_res) : "r"(p), "i" (inc) \ : "memory"); \ \ ia64_intri_res; \ }) #define ia64_fetchadd8_rel(p, inc) \ ({ \ __u64 ia64_intri_res; \ asm volatile ("fetchadd8.rel %0=[%1],%2" \ : "=r"(ia64_intri_res) : "r"(p), "i" (inc) \ : "memory"); \ \ ia64_intri_res; \ }) #define ia64_xchg1(ptr,x) \ ({ \ __u64 ia64_intri_res; \ asm volatile ("xchg1 %0=[%1],%2" \ : "=r" (ia64_intri_res) : "r" (ptr), "r" (x) : "memory"); \ ia64_intri_res; \ }) #define ia64_xchg2(ptr,x) \ ({ \ __u64 ia64_intri_res; \ asm volatile ("xchg2 %0=[%1],%2" : "=r" (ia64_intri_res) \ : "r" (ptr), "r" (x) : "memory"); \ ia64_intri_res; \ }) #define ia64_xchg4(ptr,x) \ ({ \ __u64 ia64_intri_res; \ asm volatile ("xchg4 %0=[%1],%2" : "=r" (ia64_intri_res) \ : "r" (ptr), "r" (x) : "memory"); \ ia64_intri_res; \ }) #define ia64_xchg8(ptr,x) \ ({ \ __u64 ia64_intri_res; \ asm volatile ("xchg8 %0=[%1],%2" : "=r" (ia64_intri_res) \ : "r" (ptr), "r" (x) : "memory"); \ ia64_intri_res; \ }) #define ia64_cmpxchg1_acq(ptr, new, old) \ ({ \ __u64 ia64_intri_res; \ asm volatile ("mov ar.ccv=%0;;" :: "rO"(old)); \ asm volatile ("cmpxchg1.acq %0=[%1],%2,ar.ccv": \ "=r"(ia64_intri_res) : "r"(ptr), "r"(new) : "memory"); \ ia64_intri_res; \ }) #define ia64_cmpxchg1_rel(ptr, new, old) \ ({ \ __u64 ia64_intri_res; \ asm volatile ("mov ar.ccv=%0;;" :: "rO"(old)); \ asm volatile ("cmpxchg1.rel %0=[%1],%2,ar.ccv": \ "=r"(ia64_intri_res) : "r"(ptr), "r"(new) : "memory"); \ ia64_intri_res; \ }) #define ia64_cmpxchg2_acq(ptr, new, old) \ ({ \ __u64 ia64_intri_res; \ asm volatile ("mov ar.ccv=%0;;" :: "rO"(old)); \ asm volatile ("cmpxchg2.acq %0=[%1],%2,ar.ccv": \ "=r"(ia64_intri_res) : "r"(ptr), "r"(new) : "memory"); \ ia64_intri_res; \ }) #define ia64_cmpxchg2_rel(ptr, new, old) \ ({ \ __u64 ia64_intri_res; \ asm volatile ("mov ar.ccv=%0;;" :: "rO"(old)); \ \ asm volatile ("cmpxchg2.rel %0=[%1],%2,ar.ccv": \ "=r"(ia64_intri_res) : "r"(ptr), "r"(new) : "memory"); \ ia64_intri_res; \ }) #define ia64_cmpxchg4_acq(ptr, new, old) \ ({ \ __u64 ia64_intri_res; \ asm volatile ("mov ar.ccv=%0;;" :: "rO"(old)); \ asm volatile ("cmpxchg4.acq %0=[%1],%2,ar.ccv": \ "=r"(ia64_intri_res) : "r"(ptr), "r"(new) : "memory"); \ ia64_intri_res; \ }) #define ia64_cmpxchg4_rel(ptr, new, old) \ ({ \ __u64 ia64_intri_res; \ asm volatile ("mov ar.ccv=%0;;" :: "rO"(old)); \ asm volatile ("cmpxchg4.rel %0=[%1],%2,ar.ccv": \ "=r"(ia64_intri_res) : "r"(ptr), "r"(new) : "memory"); \ ia64_intri_res; \ }) #define ia64_cmpxchg8_acq(ptr, new, old) \ ({ \ __u64 ia64_intri_res; \ asm volatile ("mov ar.ccv=%0;;" :: "rO"(old)); \ asm volatile ("cmpxchg8.acq %0=[%1],%2,ar.ccv": \ "=r"(ia64_intri_res) : "r"(ptr), "r"(new) : "memory"); \ ia64_intri_res; \ }) #define ia64_cmpxchg8_rel(ptr, new, old) \ ({ \ __u64 ia64_intri_res; \ asm volatile ("mov ar.ccv=%0;;" :: "rO"(old)); \ \ asm volatile ("cmpxchg8.rel %0=[%1],%2,ar.ccv": \ "=r"(ia64_intri_res) : "r"(ptr), "r"(new) : "memory"); \ ia64_intri_res; \ }) #define ia64_mf() asm volatile ("mf" ::: "memory") #define ia64_mfa() asm volatile ("mf.a" ::: "memory") #define ia64_invala() asm volatile ("invala" ::: "memory") #define ia64_thash(addr) \ ({ \ unsigned long ia64_intri_res; \ asm volatile ("thash %0=%1" : "=r"(ia64_intri_res) : "r" (addr)); \ ia64_intri_res; \ }) #define ia64_srlz_i() asm volatile (";; srlz.i ;;" ::: "memory") #define ia64_srlz_d() asm volatile (";; srlz.d" ::: "memory"); #ifdef HAVE_SERIALIZE_DIRECTIVE # define ia64_dv_serialize_data() asm volatile (".serialize.data"); # define ia64_dv_serialize_instruction() asm volatile (".serialize.instruction"); #else # define ia64_dv_serialize_data() # define ia64_dv_serialize_instruction() #endif #define ia64_nop(x) asm volatile ("nop %0"::"i"(x)); #define ia64_itci(addr) asm volatile ("itc.i %0;;" :: "r"(addr) : "memory") #define ia64_itcd(addr) asm volatile ("itc.d %0;;" :: "r"(addr) : "memory") #define ia64_itri(trnum, addr) asm volatile ("itr.i itr[%0]=%1" \ :: "r"(trnum), "r"(addr) : "memory") #define ia64_itrd(trnum, addr) asm volatile ("itr.d dtr[%0]=%1" \ :: "r"(trnum), "r"(addr) : "memory") #define ia64_tpa(addr) \ ({ \ unsigned long ia64_pa; \ asm volatile ("tpa %0 = %1" : "=r"(ia64_pa) : "r"(addr) : "memory"); \ ia64_pa; \ }) #define __ia64_set_dbr(index, val) \ asm volatile ("mov dbr[%0]=%1" :: "r"(index), "r"(val) : "memory") #define ia64_set_ibr(index, val) \ asm volatile ("mov ibr[%0]=%1" :: "r"(index), "r"(val) : "memory") #define ia64_set_pkr(index, val) \ asm volatile ("mov pkr[%0]=%1" :: "r"(index), "r"(val) : "memory") #define ia64_set_pmc(index, val) \ asm volatile ("mov pmc[%0]=%1" :: "r"(index), "r"(val) : "memory") #define ia64_set_pmd(index, val) \ asm volatile ("mov pmd[%0]=%1" :: "r"(index), "r"(val) : "memory") #define ia64_set_rr(index, val) \ asm volatile ("mov rr[%0]=%1" :: "r"(index), "r"(val) : "memory"); #define ia64_get_cpuid(index) \ ({ \ unsigned long ia64_intri_res; \ asm volatile ("mov %0=cpuid[%r1]" : "=r"(ia64_intri_res) : "rO"(index)); \ ia64_intri_res; \ }) #define __ia64_get_dbr(index) \ ({ \ unsigned long ia64_intri_res; \ asm volatile ("mov %0=dbr[%1]" : "=r"(ia64_intri_res) : "r"(index)); \ ia64_intri_res; \ }) #define ia64_get_ibr(index) \ ({ \ unsigned long ia64_intri_res; \ asm volatile ("mov %0=ibr[%1]" : "=r"(ia64_intri_res) : "r"(index)); \ ia64_intri_res; \ }) #define ia64_get_pkr(index) \ ({ \ unsigned long ia64_intri_res; \ asm volatile ("mov %0=pkr[%1]" : "=r"(ia64_intri_res) : "r"(index)); \ ia64_intri_res; \ }) #define ia64_get_pmc(index) \ ({ \ unsigned long ia64_intri_res; \ asm volatile ("mov %0=pmc[%1]" : "=r"(ia64_intri_res) : "r"(index)); \ ia64_intri_res; \ }) #define ia64_get_pmd(index) \ ({ \ unsigned long ia64_intri_res; \ asm volatile ("mov %0=pmd[%1]" : "=r"(ia64_intri_res) : "r"(index)); \ ia64_intri_res; \ }) #define ia64_get_rr(index) \ ({ \ unsigned long ia64_intri_res; \ asm volatile ("mov %0=rr[%1]" : "=r"(ia64_intri_res) : "r" (index)); \ ia64_intri_res; \ }) #define ia64_fc(addr) asm volatile ("fc %0" :: "r"(addr) : "memory") #define ia64_sync_i() asm volatile (";; sync.i" ::: "memory") #define ia64_ssm(mask) asm volatile ("ssm %0":: "i"((mask)) : "memory") #define ia64_rsm(mask) asm volatile ("rsm %0":: "i"((mask)) : "memory") #define ia64_sum(mask) asm volatile ("sum %0":: "i"((mask)) : "memory") #define ia64_rum(mask) asm volatile ("rum %0":: "i"((mask)) : "memory") #define ia64_ptce(addr) asm volatile ("ptc.e %0" :: "r"(addr)) #define ia64_ptcga(addr, size) \ do { \ asm volatile ("ptc.ga %0,%1" :: "r"(addr), "r"(size) : "memory"); \ ia64_dv_serialize_data(); \ } while (0) #define ia64_ptcl(addr, size) \ do { \ asm volatile ("ptc.l %0,%1" :: "r"(addr), "r"(size) : "memory"); \ ia64_dv_serialize_data(); \ } while (0) #define ia64_ptri(addr, size) \ asm volatile ("ptr.i %0,%1" :: "r"(addr), "r"(size) : "memory") #define ia64_ptrd(addr, size) \ asm volatile ("ptr.d %0,%1" :: "r"(addr), "r"(size) : "memory") #define ia64_ttag(addr) \ ({ \ __u64 ia64_intri_res; \ asm volatile ("ttag %0=%1" : "=r"(ia64_intri_res) : "r" (addr)); \ ia64_intri_res; \ }) /* Values for lfhint in ia64_lfetch and ia64_lfetch_fault */ #define ia64_lfhint_none 0 #define ia64_lfhint_nt1 1 #define ia64_lfhint_nt2 2 #define ia64_lfhint_nta 3 #define ia64_lfetch(lfhint, y) \ ({ \ switch (lfhint) { \ case ia64_lfhint_none: \ asm volatile ("lfetch [%0]" : : "r"(y)); \ break; \ case ia64_lfhint_nt1: \ asm volatile ("lfetch.nt1 [%0]" : : "r"(y)); \ break; \ case ia64_lfhint_nt2: \ asm volatile ("lfetch.nt2 [%0]" : : "r"(y)); \ break; \ case ia64_lfhint_nta: \ asm volatile ("lfetch.nta [%0]" : : "r"(y)); \ break; \ } \ }) #define ia64_lfetch_excl(lfhint, y) \ ({ \ switch (lfhint) { \ case ia64_lfhint_none: \ asm volatile ("lfetch.excl [%0]" :: "r"(y)); \ break; \ case ia64_lfhint_nt1: \ asm volatile ("lfetch.excl.nt1 [%0]" :: "r"(y)); \ break; \ case ia64_lfhint_nt2: \ asm volatile ("lfetch.excl.nt2 [%0]" :: "r"(y)); \ break; \ case ia64_lfhint_nta: \ asm volatile ("lfetch.excl.nta [%0]" :: "r"(y)); \ break; \ } \ }) #define ia64_lfetch_fault(lfhint, y) \ ({ \ switch (lfhint) { \ case ia64_lfhint_none: \ asm volatile ("lfetch.fault [%0]" : : "r"(y)); \ break; \ case ia64_lfhint_nt1: \ asm volatile ("lfetch.fault.nt1 [%0]" : : "r"(y)); \ break; \ case ia64_lfhint_nt2: \ asm volatile ("lfetch.fault.nt2 [%0]" : : "r"(y)); \ break; \ case ia64_lfhint_nta: \ asm volatile ("lfetch.fault.nta [%0]" : : "r"(y)); \ break; \ } \ }) #define ia64_lfetch_fault_excl(lfhint, y) \ ({ \ switch (lfhint) { \ case ia64_lfhint_none: \ asm volatile ("lfetch.fault.excl [%0]" :: "r"(y)); \ break; \ case ia64_lfhint_nt1: \ asm volatile ("lfetch.fault.excl.nt1 [%0]" :: "r"(y)); \ break; \ case ia64_lfhint_nt2: \ asm volatile ("lfetch.fault.excl.nt2 [%0]" :: "r"(y)); \ break; \ case ia64_lfhint_nta: \ asm volatile ("lfetch.fault.excl.nta [%0]" :: "r"(y)); \ break; \ } \ }) #define ia64_intrin_local_irq_restore(x) \ do { \ asm volatile (";; cmp.ne p6,p7=%0,r0;;" \ "(p6) ssm psr.i;" \ "(p7) rsm psr.i;;" \ "(p6) srlz.d" \ :: "r"((x)) : "p6", "p7", "memory"); \ } while (0) #endif /* _UAPI_ASM_IA64_GCC_INTRIN_H */ PK ! �u�� � termios.hnu �[��� /* SPDX-License-Identifier: GPL-2.0 */ #ifndef _ALPHA_TERMIOS_H #define _ALPHA_TERMIOS_H #include <uapi/asm/termios.h> /* eof=^D eol=\0 eol2=\0 erase=del werase=^W kill=^U reprint=^R sxtc=\0 intr=^C quit=^\ susp=^Z <OSF/1 VDSUSP> start=^Q stop=^S lnext=^V discard=^U vmin=\1 vtime=\0 */ #define INIT_C_CC "\004\000\000\177\027\025\022\000\003\034\032\000\021\023\026\025\001\000" /* * Translate a "termio" structure into a "termios". Ugh. */ #define user_termio_to_kernel_termios(a_termios, u_termio) \ ({ \ struct ktermios *k_termios = (a_termios); \ struct termio k_termio; \ int canon, ret; \ \ ret = copy_from_user(&k_termio, u_termio, sizeof(k_termio)); \ if (!ret) { \ /* Overwrite only the low bits. */ \ *(unsigned short *)&k_termios->c_iflag = k_termio.c_iflag; \ *(unsigned short *)&k_termios->c_oflag = k_termio.c_oflag; \ *(unsigned short *)&k_termios->c_cflag = k_termio.c_cflag; \ *(unsigned short *)&k_termios->c_lflag = k_termio.c_lflag; \ canon = k_termio.c_lflag & ICANON; \ \ k_termios->c_cc[VINTR] = k_termio.c_cc[_VINTR]; \ k_termios->c_cc[VQUIT] = k_termio.c_cc[_VQUIT]; \ k_termios->c_cc[VERASE] = k_termio.c_cc[_VERASE]; \ k_termios->c_cc[VKILL] = k_termio.c_cc[_VKILL]; \ k_termios->c_cc[VEOL2] = k_termio.c_cc[_VEOL2]; \ k_termios->c_cc[VSWTC] = k_termio.c_cc[_VSWTC]; \ k_termios->c_cc[canon ? VEOF : VMIN] = k_termio.c_cc[_VEOF]; \ k_termios->c_cc[canon ? VEOL : VTIME] = k_termio.c_cc[_VEOL]; \ } \ ret; \ }) /* * Translate a "termios" structure into a "termio". Ugh. * * Note the "fun" _VMIN overloading. */ #define kernel_termios_to_user_termio(u_termio, a_termios) \ ({ \ struct ktermios *k_termios = (a_termios); \ struct termio k_termio; \ int canon; \ \ k_termio.c_iflag = k_termios->c_iflag; \ k_termio.c_oflag = k_termios->c_oflag; \ k_termio.c_cflag = k_termios->c_cflag; \ canon = (k_termio.c_lflag = k_termios->c_lflag) & ICANON; \ \ k_termio.c_line = k_termios->c_line; \ k_termio.c_cc[_VINTR] = k_termios->c_cc[VINTR]; \ k_termio.c_cc[_VQUIT] = k_termios->c_cc[VQUIT]; \ k_termio.c_cc[_VERASE] = k_termios->c_cc[VERASE]; \ k_termio.c_cc[_VKILL] = k_termios->c_cc[VKILL]; \ k_termio.c_cc[_VEOF] = k_termios->c_cc[canon ? VEOF : VMIN]; \ k_termio.c_cc[_VEOL] = k_termios->c_cc[canon ? VEOL : VTIME]; \ k_termio.c_cc[_VEOL2] = k_termios->c_cc[VEOL2]; \ k_termio.c_cc[_VSWTC] = k_termios->c_cc[VSWTC]; \ \ copy_to_user(u_termio, &k_termio, sizeof(k_termio)); \ }) #define user_termios_to_kernel_termios(k, u) \ copy_from_user(k, u, sizeof(struct termios2)) #define kernel_termios_to_user_termios(u, k) \ copy_to_user(u, k, sizeof(struct termios2)) #define user_termios_to_kernel_termios_1(k, u) \ copy_from_user(k, u, sizeof(struct termios)) #define kernel_termios_to_user_termios_1(u, k) \ copy_to_user(u, k, sizeof(struct termios)) #endif /* _ALPHA_TERMIOS_H */ PK ! �K�?( ( ustack.hnu �[��� /* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */ #ifndef _UAPI_ASM_IA64_USTACK_H #define _UAPI_ASM_IA64_USTACK_H /* * Constants for the user stack size */ /* Make a default stack size of 2GiB */ #define DEFAULT_USER_STACK_SIZE (1UL << 31) #endif /* _UAPI_ASM_IA64_USTACK_H */ PK ! �s��� � fcntl.hnu �[��� /* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */ #ifndef _ASM_IA64_FCNTL_H #define _ASM_IA64_FCNTL_H /* * Modified 1998-2000 * David Mosberger-Tang <davidm@hpl.hp.com>, Hewlett-Packard Co. */ #define force_o_largefile() \ (personality(current->personality) != PER_LINUX32) #include <linux/personality.h> #include <asm-generic/fcntl.h> #endif /* _ASM_IA64_FCNTL_H */ PK ! �x; ; ia64regs.hnu �[��� /* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */ /* * Copyright (C) 2002,2003 Intel Corp. * Jun Nakajima <jun.nakajima@intel.com> * Suresh Siddha <suresh.b.siddha@intel.com> */ #ifndef _ASM_IA64_IA64REGS_H #define _ASM_IA64_IA64REGS_H /* * Register Names for getreg() and setreg(). * * The "magic" numbers happen to match the values used by the Intel compiler's * getreg()/setreg() intrinsics. */ /* Special Registers */ #define _IA64_REG_IP 1016 /* getreg only */ #define _IA64_REG_PSR 1019 #define _IA64_REG_PSR_L 1019 /* General Integer Registers */ #define _IA64_REG_GP 1025 /* R1 */ #define _IA64_REG_R8 1032 /* R8 */ #define _IA64_REG_R9 1033 /* R9 */ #define _IA64_REG_SP 1036 /* R12 */ #define _IA64_REG_TP 1037 /* R13 */ /* Application Registers */ #define _IA64_REG_AR_KR0 3072 #define _IA64_REG_AR_KR1 3073 #define _IA64_REG_AR_KR2 3074 #define _IA64_REG_AR_KR3 3075 #define _IA64_REG_AR_KR4 3076 #define _IA64_REG_AR_KR5 3077 #define _IA64_REG_AR_KR6 3078 #define _IA64_REG_AR_KR7 3079 #define _IA64_REG_AR_RSC 3088 #define _IA64_REG_AR_BSP 3089 #define _IA64_REG_AR_BSPSTORE 3090 #define _IA64_REG_AR_RNAT 3091 #define _IA64_REG_AR_FCR 3093 #define _IA64_REG_AR_EFLAG 3096 #define _IA64_REG_AR_CSD 3097 #define _IA64_REG_AR_SSD 3098 #define _IA64_REG_AR_CFLAG 3099 #define _IA64_REG_AR_FSR 3100 #define _IA64_REG_AR_FIR 3101 #define _IA64_REG_AR_FDR 3102 #define _IA64_REG_AR_CCV 3104 #define _IA64_REG_AR_UNAT 3108 #define _IA64_REG_AR_FPSR 3112 #define _IA64_REG_AR_ITC 3116 #define _IA64_REG_AR_PFS 3136 #define _IA64_REG_AR_LC 3137 #define _IA64_REG_AR_EC 3138 /* Control Registers */ #define _IA64_REG_CR_DCR 4096 #define _IA64_REG_CR_ITM 4097 #define _IA64_REG_CR_IVA 4098 #define _IA64_REG_CR_PTA 4104 #define _IA64_REG_CR_IPSR 4112 #define _IA64_REG_CR_ISR 4113 #define _IA64_REG_CR_IIP 4115 #define _IA64_REG_CR_IFA 4116 #define _IA64_REG_CR_ITIR 4117 #define _IA64_REG_CR_IIPA 4118 #define _IA64_REG_CR_IFS 4119 #define _IA64_REG_CR_IIM 4120 #define _IA64_REG_CR_IHA 4121 #define _IA64_REG_CR_LID 4160 #define _IA64_REG_CR_IVR 4161 /* getreg only */ #define _IA64_REG_CR_TPR 4162 #define _IA64_REG_CR_EOI 4163 #define _IA64_REG_CR_IRR0 4164 /* getreg only */ #define _IA64_REG_CR_IRR1 4165 /* getreg only */ #define _IA64_REG_CR_IRR2 4166 /* getreg only */ #define _IA64_REG_CR_IRR3 4167 /* getreg only */ #define _IA64_REG_CR_ITV 4168 #define _IA64_REG_CR_PMV 4169 #define _IA64_REG_CR_CMCV 4170 #define _IA64_REG_CR_LRR0 4176 #define _IA64_REG_CR_LRR1 4177 /* Indirect Registers for getindreg() and setindreg() */ #define _IA64_REG_INDR_CPUID 9000 /* getindreg only */ #define _IA64_REG_INDR_DBR 9001 #define _IA64_REG_INDR_IBR 9002 #define _IA64_REG_INDR_PKR 9003 #define _IA64_REG_INDR_PMC 9004 #define _IA64_REG_INDR_PMD 9005 #define _IA64_REG_INDR_RR 9006 #endif /* _ASM_IA64_IA64REGS_H */ PK ! ��̳� � ptrace_offsets.hnu �[��� /* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */ #ifndef _ASM_IA64_PTRACE_OFFSETS_H #define _ASM_IA64_PTRACE_OFFSETS_H /* * Copyright (C) 1999, 2003 Hewlett-Packard Co * David Mosberger-Tang <davidm@hpl.hp.com> */ /* * The "uarea" that can be accessed via PEEKUSER and POKEUSER is a * virtual structure that would have the following definition: * * struct uarea { * struct ia64_fpreg fph[96]; // f32-f127 * unsigned long nat_bits; * unsigned long empty1; * struct ia64_fpreg f2; // f2-f5 * : * struct ia64_fpreg f5; * struct ia64_fpreg f10; // f10-f31 * : * struct ia64_fpreg f31; * unsigned long r4; // r4-r7 * : * unsigned long r7; * unsigned long b1; // b1-b5 * : * unsigned long b5; * unsigned long ar_ec; * unsigned long ar_lc; * unsigned long empty2[5]; * unsigned long cr_ipsr; * unsigned long cr_iip; * unsigned long cfm; * unsigned long ar_unat; * unsigned long ar_pfs; * unsigned long ar_rsc; * unsigned long ar_rnat; * unsigned long ar_bspstore; * unsigned long pr; * unsigned long b6; * unsigned long ar_bsp; * unsigned long r1; * unsigned long r2; * unsigned long r3; * unsigned long r12; * unsigned long r13; * unsigned long r14; * unsigned long r15; * unsigned long r8; * unsigned long r9; * unsigned long r10; * unsigned long r11; * unsigned long r16; * : * unsigned long r31; * unsigned long ar_ccv; * unsigned long ar_fpsr; * unsigned long b0; * unsigned long b7; * unsigned long f6; * unsigned long f7; * unsigned long f8; * unsigned long f9; * unsigned long ar_csd; * unsigned long ar_ssd; * unsigned long rsvd1[710]; * unsigned long dbr[8]; * unsigned long rsvd2[504]; * unsigned long ibr[8]; * unsigned long rsvd3[504]; * unsigned long pmd[4]; * } */ /* fph: */ #define PT_F32 0x0000 #define PT_F33 0x0010 #define PT_F34 0x0020 #define PT_F35 0x0030 #define PT_F36 0x0040 #define PT_F37 0x0050 #define PT_F38 0x0060 #define PT_F39 0x0070 #define PT_F40 0x0080 #define PT_F41 0x0090 #define PT_F42 0x00a0 #define PT_F43 0x00b0 #define PT_F44 0x00c0 #define PT_F45 0x00d0 #define PT_F46 0x00e0 #define PT_F47 0x00f0 #define PT_F48 0x0100 #define PT_F49 0x0110 #define PT_F50 0x0120 #define PT_F51 0x0130 #define PT_F52 0x0140 #define PT_F53 0x0150 #define PT_F54 0x0160 #define PT_F55 0x0170 #define PT_F56 0x0180 #define PT_F57 0x0190 #define PT_F58 0x01a0 #define PT_F59 0x01b0 #define PT_F60 0x01c0 #define PT_F61 0x01d0 #define PT_F62 0x01e0 #define PT_F63 0x01f0 #define PT_F64 0x0200 #define PT_F65 0x0210 #define PT_F66 0x0220 #define PT_F67 0x0230 #define PT_F68 0x0240 #define PT_F69 0x0250 #define PT_F70 0x0260 #define PT_F71 0x0270 #define PT_F72 0x0280 #define PT_F73 0x0290 #define PT_F74 0x02a0 #define PT_F75 0x02b0 #define PT_F76 0x02c0 #define PT_F77 0x02d0 #define PT_F78 0x02e0 #define PT_F79 0x02f0 #define PT_F80 0x0300 #define PT_F81 0x0310 #define PT_F82 0x0320 #define PT_F83 0x0330 #define PT_F84 0x0340 #define PT_F85 0x0350 #define PT_F86 0x0360 #define PT_F87 0x0370 #define PT_F88 0x0380 #define PT_F89 0x0390 #define PT_F90 0x03a0 #define PT_F91 0x03b0 #define PT_F92 0x03c0 #define PT_F93 0x03d0 #define PT_F94 0x03e0 #define PT_F95 0x03f0 #define PT_F96 0x0400 #define PT_F97 0x0410 #define PT_F98 0x0420 #define PT_F99 0x0430 #define PT_F100 0x0440 #define PT_F101 0x0450 #define PT_F102 0x0460 #define PT_F103 0x0470 #define PT_F104 0x0480 #define PT_F105 0x0490 #define PT_F106 0x04a0 #define PT_F107 0x04b0 #define PT_F108 0x04c0 #define PT_F109 0x04d0 #define PT_F110 0x04e0 #define PT_F111 0x04f0 #define PT_F112 0x0500 #define PT_F113 0x0510 #define PT_F114 0x0520 #define PT_F115 0x0530 #define PT_F116 0x0540 #define PT_F117 0x0550 #define PT_F118 0x0560 #define PT_F119 0x0570 #define PT_F120 0x0580 #define PT_F121 0x0590 #define PT_F122 0x05a0 #define PT_F123 0x05b0 #define PT_F124 0x05c0 #define PT_F125 0x05d0 #define PT_F126 0x05e0 #define PT_F127 0x05f0 #define PT_NAT_BITS 0x0600 #define PT_F2 0x0610 #define PT_F3 0x0620 #define PT_F4 0x0630 #define PT_F5 0x0640 #define PT_F10 0x0650 #define PT_F11 0x0660 #define PT_F12 0x0670 #define PT_F13 0x0680 #define PT_F14 0x0690 #define PT_F15 0x06a0 #define PT_F16 0x06b0 #define PT_F17 0x06c0 #define PT_F18 0x06d0 #define PT_F19 0x06e0 #define PT_F20 0x06f0 #define PT_F21 0x0700 #define PT_F22 0x0710 #define PT_F23 0x0720 #define PT_F24 0x0730 #define PT_F25 0x0740 #define PT_F26 0x0750 #define PT_F27 0x0760 #define PT_F28 0x0770 #define PT_F29 0x0780 #define PT_F30 0x0790 #define PT_F31 0x07a0 #define PT_R4 0x07b0 #define PT_R5 0x07b8 #define PT_R6 0x07c0 #define PT_R7 0x07c8 #define PT_B1 0x07d8 #define PT_B2 0x07e0 #define PT_B3 0x07e8 #define PT_B4 0x07f0 #define PT_B5 0x07f8 #define PT_AR_EC 0x0800 #define PT_AR_LC 0x0808 #define PT_CR_IPSR 0x0830 #define PT_CR_IIP 0x0838 #define PT_CFM 0x0840 #define PT_AR_UNAT 0x0848 #define PT_AR_PFS 0x0850 #define PT_AR_RSC 0x0858 #define PT_AR_RNAT 0x0860 #define PT_AR_BSPSTORE 0x0868 #define PT_PR 0x0870 #define PT_B6 0x0878 #define PT_AR_BSP 0x0880 /* note: this points to the *end* of the backing store! */ #define PT_R1 0x0888 #define PT_R2 0x0890 #define PT_R3 0x0898 #define PT_R12 0x08a0 #define PT_R13 0x08a8 #define PT_R14 0x08b0 #define PT_R15 0x08b8 #define PT_R8 0x08c0 #define PT_R9 0x08c8 #define PT_R10 0x08d0 #define PT_R11 0x08d8 #define PT_R16 0x08e0 #define PT_R17 0x08e8 #define PT_R18 0x08f0 #define PT_R19 0x08f8 #define PT_R20 0x0900 #define PT_R21 0x0908 #define PT_R22 0x0910 #define PT_R23 0x0918 #define PT_R24 0x0920 #define PT_R25 0x0928 #define PT_R26 0x0930 #define PT_R27 0x0938 #define PT_R28 0x0940 #define PT_R29 0x0948 #define PT_R30 0x0950 #define PT_R31 0x0958 #define PT_AR_CCV 0x0960 #define PT_AR_FPSR 0x0968 #define PT_B0 0x0970 #define PT_B7 0x0978 #define PT_F6 0x0980 #define PT_F7 0x0990 #define PT_F8 0x09a0 #define PT_F9 0x09b0 #define PT_AR_CSD 0x09c0 #define PT_AR_SSD 0x09c8 #define PT_DBR 0x2000 /* data breakpoint registers */ #define PT_IBR 0x3000 /* instruction breakpoint registers */ #define PT_PMD 0x4000 /* performance monitoring counters */ #endif /* _ASM_IA64_PTRACE_OFFSETS_H */ PK ! �h$�\ \ ucontext.hnu �[��� /* SPDX-License-Identifier: GPL-2.0 */ #ifndef _ASMAXP_UCONTEXT_H #define _ASMAXP_UCONTEXT_H struct ucontext { unsigned long uc_flags; struct ucontext *uc_link; old_sigset_t uc_osf_sigmask; stack_t uc_stack; struct sigcontext uc_mcontext; sigset_t uc_sigmask; /* mask last for extensibility */ }; #endif /* !_ASMAXP_UCONTEXT_H */ PK ! H��$@ @ intrinsics.hnu �[��� /* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */ /* * Compiler-dependent intrinsics. * * Copyright (C) 2002-2003 Hewlett-Packard Co * David Mosberger-Tang <davidm@hpl.hp.com> */ #ifndef _UAPI_ASM_IA64_INTRINSICS_H #define _UAPI_ASM_IA64_INTRINSICS_H #ifndef __ASSEMBLY__ #include <linux/types.h> /* include compiler specific intrinsics */ #include <asm/ia64regs.h> #ifdef __INTEL_COMPILER # include <asm/intel_intrin.h> #else # include <asm/gcc_intrin.h> #endif #include <asm/cmpxchg.h> #define ia64_set_rr0_to_rr4(val0, val1, val2, val3, val4) \ do { \ ia64_set_rr(0x0000000000000000UL, (val0)); \ ia64_set_rr(0x2000000000000000UL, (val1)); \ ia64_set_rr(0x4000000000000000UL, (val2)); \ ia64_set_rr(0x6000000000000000UL, (val3)); \ ia64_set_rr(0x8000000000000000UL, (val4)); \ } while (0) /* * Force an unresolved reference if someone tries to use * ia64_fetch_and_add() with a bad value. */ extern unsigned long __bad_size_for_ia64_fetch_and_add (void); extern unsigned long __bad_increment_for_ia64_fetch_and_add (void); #define IA64_FETCHADD(tmp,v,n,sz,sem) \ ({ \ switch (sz) { \ case 4: \ tmp = ia64_fetchadd4_##sem((unsigned int *) v, n); \ break; \ \ case 8: \ tmp = ia64_fetchadd8_##sem((unsigned long *) v, n); \ break; \ \ default: \ __bad_size_for_ia64_fetch_and_add(); \ } \ }) #define ia64_fetchadd(i,v,sem) \ ({ \ __u64 _tmp; \ volatile __typeof__(*(v)) *_v = (v); \ /* Can't use a switch () here: gcc isn't always smart enough for that... */ \ if ((i) == -16) \ IA64_FETCHADD(_tmp, _v, -16, sizeof(*(v)), sem); \ else if ((i) == -8) \ IA64_FETCHADD(_tmp, _v, -8, sizeof(*(v)), sem); \ else if ((i) == -4) \ IA64_FETCHADD(_tmp, _v, -4, sizeof(*(v)), sem); \ else if ((i) == -1) \ IA64_FETCHADD(_tmp, _v, -1, sizeof(*(v)), sem); \ else if ((i) == 1) \ IA64_FETCHADD(_tmp, _v, 1, sizeof(*(v)), sem); \ else if ((i) == 4) \ IA64_FETCHADD(_tmp, _v, 4, sizeof(*(v)), sem); \ else if ((i) == 8) \ IA64_FETCHADD(_tmp, _v, 8, sizeof(*(v)), sem); \ else if ((i) == 16) \ IA64_FETCHADD(_tmp, _v, 16, sizeof(*(v)), sem); \ else \ _tmp = __bad_increment_for_ia64_fetch_and_add(); \ (__typeof__(*(v))) (_tmp); /* return old value */ \ }) #define ia64_fetch_and_add(i,v) (ia64_fetchadd(i, v, rel) + (i)) /* return new value */ #endif #endif /* _UAPI_ASM_IA64_INTRINSICS_H */ PK ! -l�y y bitsperlong.hnu �[��� /* SPDX-License-Identifier: GPL-2.0-only WITH Linux-syscall-note */ /* * Copyright (C) 2012 ARM Ltd. * Copyright (C) 2015 Regents of the University of California */ #ifndef _UAPI_ASM_RISCV_BITSPERLONG_H #define _UAPI_ASM_RISCV_BITSPERLONG_H #define __BITS_PER_LONG (__SIZEOF_POINTER__ * 8) #include <asm-generic/bitsperlong.h> #endif /* _UAPI_ASM_RISCV_BITSPERLONG_H */ PK ! ˡ��" " intel_intrin.hnu �[��� /* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */ #ifndef _ASM_IA64_INTEL_INTRIN_H #define _ASM_IA64_INTEL_INTRIN_H /* * Intel Compiler Intrinsics * * Copyright (C) 2002,2003 Jun Nakajima <jun.nakajima@intel.com> * Copyright (C) 2002,2003 Suresh Siddha <suresh.b.siddha@intel.com> * Copyright (C) 2005,2006 Hongjiu Lu <hongjiu.lu@intel.com> * */ #include <ia64intrin.h> #define ia64_barrier() __memory_barrier() #define ia64_stop() /* Nothing: As of now stop bit is generated for each * intrinsic */ #define ia64_getreg __getReg #define ia64_setreg __setReg #define ia64_hint __hint #define ia64_hint_pause __hint_pause #define ia64_mux1_brcst _m64_mux1_brcst #define ia64_mux1_mix _m64_mux1_mix #define ia64_mux1_shuf _m64_mux1_shuf #define ia64_mux1_alt _m64_mux1_alt #define ia64_mux1_rev _m64_mux1_rev #define ia64_mux1(x,v) _m_to_int64(_m64_mux1(_m_from_int64(x), (v))) #define ia64_popcnt _m64_popcnt #define ia64_getf_exp __getf_exp #define ia64_shrp _m64_shrp #define ia64_tpa __tpa #define ia64_invala __invala #define ia64_invala_gr __invala_gr #define ia64_invala_fr __invala_fr #define ia64_nop __nop #define ia64_sum __sum #define ia64_ssm __ssm #define ia64_rum __rum #define ia64_rsm __rsm #define ia64_fc __fc #define ia64_ldfs __ldfs #define ia64_ldfd __ldfd #define ia64_ldfe __ldfe #define ia64_ldf8 __ldf8 #define ia64_ldf_fill __ldf_fill #define ia64_stfs __stfs #define ia64_stfd __stfd #define ia64_stfe __stfe #define ia64_stf8 __stf8 #define ia64_stf_spill __stf_spill #define ia64_mf __mf #define ia64_mfa __mfa #define ia64_fetchadd4_acq __fetchadd4_acq #define ia64_fetchadd4_rel __fetchadd4_rel #define ia64_fetchadd8_acq __fetchadd8_acq #define ia64_fetchadd8_rel __fetchadd8_rel #define ia64_xchg1 _InterlockedExchange8 #define ia64_xchg2 _InterlockedExchange16 #define ia64_xchg4 _InterlockedExchange #define ia64_xchg8 _InterlockedExchange64 #define ia64_cmpxchg1_rel _InterlockedCompareExchange8_rel #define ia64_cmpxchg1_acq _InterlockedCompareExchange8_acq #define ia64_cmpxchg2_rel _InterlockedCompareExchange16_rel #define ia64_cmpxchg2_acq _InterlockedCompareExchange16_acq #define ia64_cmpxchg4_rel _InterlockedCompareExchange_rel #define ia64_cmpxchg4_acq _InterlockedCompareExchange_acq #define ia64_cmpxchg8_rel _InterlockedCompareExchange64_rel #define ia64_cmpxchg8_acq _InterlockedCompareExchange64_acq #define __ia64_set_dbr(index, val) \ __setIndReg(_IA64_REG_INDR_DBR, index, val) #define ia64_set_ibr(index, val) \ __setIndReg(_IA64_REG_INDR_IBR, index, val) #define ia64_set_pkr(index, val) \ __setIndReg(_IA64_REG_INDR_PKR, index, val) #define ia64_set_pmc(index, val) \ __setIndReg(_IA64_REG_INDR_PMC, index, val) #define ia64_set_pmd(index, val) \ __setIndReg(_IA64_REG_INDR_PMD, index, val) #define ia64_set_rr(index, val) \ __setIndReg(_IA64_REG_INDR_RR, index, val) #define ia64_get_cpuid(index) \ __getIndReg(_IA64_REG_INDR_CPUID, index) #define __ia64_get_dbr(index) __getIndReg(_IA64_REG_INDR_DBR, index) #define ia64_get_ibr(index) __getIndReg(_IA64_REG_INDR_IBR, index) #define ia64_get_pkr(index) __getIndReg(_IA64_REG_INDR_PKR, index) #define ia64_get_pmc(index) __getIndReg(_IA64_REG_INDR_PMC, index) #define ia64_get_pmd(index) __getIndReg(_IA64_REG_INDR_PMD, index) #define ia64_get_rr(index) __getIndReg(_IA64_REG_INDR_RR, index) #define ia64_srlz_d __dsrlz #define ia64_srlz_i __isrlz #define ia64_dv_serialize_data() #define ia64_dv_serialize_instruction() #define ia64_st1_rel __st1_rel #define ia64_st2_rel __st2_rel #define ia64_st4_rel __st4_rel #define ia64_st8_rel __st8_rel /* FIXME: need st4.rel.nta intrinsic */ #define ia64_st4_rel_nta __st4_rel #define ia64_ld1_acq __ld1_acq #define ia64_ld2_acq __ld2_acq #define ia64_ld4_acq __ld4_acq #define ia64_ld8_acq __ld8_acq #define ia64_sync_i __synci #define ia64_thash __thash #define ia64_ttag __ttag #define ia64_itcd __itcd #define ia64_itci __itci #define ia64_itrd __itrd #define ia64_itri __itri #define ia64_ptce __ptce #define ia64_ptcl __ptcl #define ia64_ptcg __ptcg #define ia64_ptcga __ptcga #define ia64_ptri __ptri #define ia64_ptrd __ptrd #define ia64_dep_mi _m64_dep_mi /* Values for lfhint in __lfetch and __lfetch_fault */ #define ia64_lfhint_none __lfhint_none #define ia64_lfhint_nt1 __lfhint_nt1 #define ia64_lfhint_nt2 __lfhint_nt2 #define ia64_lfhint_nta __lfhint_nta #define ia64_lfetch __lfetch #define ia64_lfetch_excl __lfetch_excl #define ia64_lfetch_fault __lfetch_fault #define ia64_lfetch_fault_excl __lfetch_fault_excl #define ia64_intrin_local_irq_restore(x) \ do { \ if ((x) != 0) { \ ia64_ssm(IA64_PSR_I); \ ia64_srlz_d(); \ } else { \ ia64_rsm(IA64_PSR_I); \ } \ } while (0) #define __builtin_trap() __break(0); #endif /* _ASM_IA64_INTEL_INTRIN_H */ PK ! tX��� � resource.hnu �[��� /* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */ #ifndef _ASM_IA64_RESOURCE_H #define _ASM_IA64_RESOURCE_H #include <asm/ustack.h> #include <asm-generic/resource.h> #endif /* _ASM_IA64_RESOURCE_H */ PK ! >�V�� � siginfo.hnu �[��� /* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */ /* * Based on <asm-i386/siginfo.h>. * * Modified 1998-2002 * David Mosberger-Tang <davidm@hpl.hp.com>, Hewlett-Packard Co */ #ifndef _UAPI_ASM_IA64_SIGINFO_H #define _UAPI_ASM_IA64_SIGINFO_H #include <asm-generic/siginfo.h> #define si_imm _sifields._sigfault._imm /* as per UNIX SysV ABI spec */ #define si_flags _sifields._sigfault._flags /* * si_isr is valid for SIGILL, SIGFPE, SIGSEGV, SIGBUS, and SIGTRAP provided that * si_code is non-zero and __ISR_VALID is set in si_flags. */ #define si_isr _sifields._sigfault._isr /* * Flag values for si_flags: */ #define __ISR_VALID_BIT 0 #define __ISR_VALID (1 << __ISR_VALID_BIT) #endif /* _UAPI_ASM_IA64_SIGINFO_H */ PK ! '��� fpu.hnu �[��� /* SPDX-License-Identifier: GPL-2.0 */ #ifndef __ASM_ALPHA_FPU_H #define __ASM_ALPHA_FPU_H #include <asm/special_insns.h> #include <uapi/asm/fpu.h> /* The following two functions don't need trapb/excb instructions around the mf_fpcr/mt_fpcr instructions because (a) the kernel never generates arithmetic faults and (b) call_pal instructions are implied trap barriers. */ static inline unsigned long rdfpcr(void) { unsigned long tmp, ret; #if defined(CONFIG_ALPHA_EV6) || defined(CONFIG_ALPHA_EV67) __asm__ __volatile__ ( "ftoit $f0,%0\n\t" "mf_fpcr $f0\n\t" "ftoit $f0,%1\n\t" "itoft %0,$f0" : "=r"(tmp), "=r"(ret)); #else __asm__ __volatile__ ( "stt $f0,%0\n\t" "mf_fpcr $f0\n\t" "stt $f0,%1\n\t" "ldt $f0,%0" : "=m"(tmp), "=m"(ret)); #endif return ret; } static inline void wrfpcr(unsigned long val) { unsigned long tmp; #if defined(CONFIG_ALPHA_EV6) || defined(CONFIG_ALPHA_EV67) __asm__ __volatile__ ( "ftoit $f0,%0\n\t" "itoft %1,$f0\n\t" "mt_fpcr $f0\n\t" "itoft %0,$f0" : "=&r"(tmp) : "r"(val)); #else __asm__ __volatile__ ( "stt $f0,%0\n\t" "ldt $f0,%1\n\t" "mt_fpcr $f0\n\t" "ldt $f0,%0" : "=m"(tmp) : "m"(val)); #endif } static inline unsigned long swcr_update_status(unsigned long swcr, unsigned long fpcr) { /* EV6 implements most of the bits in hardware. Collect the acrued exception bits from the real fpcr. */ if (implver() == IMPLVER_EV6) { swcr &= ~IEEE_STATUS_MASK; swcr |= (fpcr >> 35) & IEEE_STATUS_MASK; } return swcr; } extern unsigned long alpha_read_fp_reg (unsigned long reg); extern void alpha_write_fp_reg (unsigned long reg, unsigned long val); extern unsigned long alpha_read_fp_reg_s (unsigned long reg); extern void alpha_write_fp_reg_s (unsigned long reg, unsigned long val); #endif /* __ASM_ALPHA_FPU_H */ PK ! �ˎ+ + statfs.hnu �[��� /* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */ #ifndef _ASM_IA64_STATFS_H #define _ASM_IA64_STATFS_H /* * Based on <asm-i386/statfs.h>. * * Modified 1998, 1999, 2003 * David Mosberger-Tang <davidm@hpl.hp.com>, Hewlett-Packard Co */ /* * We need compat_statfs64 to be packed, because the i386 ABI won't * add padding at the end to bring it to a multiple of 8 bytes, but * the IA64 ABI will. */ #define ARCH_PACK_COMPAT_STATFS64 __attribute__((packed,aligned(4))) #include <asm-generic/statfs.h> #endif /* _ASM_IA64_STATFS_H */ PK ! ���G� � runtime_instr.hnu �[��� /* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */ #ifndef _S390_UAPI_RUNTIME_INSTR_H #define _S390_UAPI_RUNTIME_INSTR_H #include <linux/types.h> #define S390_RUNTIME_INSTR_START 0x1 #define S390_RUNTIME_INSTR_STOP 0x2 struct runtime_instr_cb { __u64 rca; __u64 roa; __u64 rla; __u32 v : 1; __u32 s : 1; __u32 k : 1; __u32 h : 1; __u32 a : 1; __u32 reserved1 : 3; __u32 ps : 1; __u32 qs : 1; __u32 pc : 1; __u32 qc : 1; __u32 reserved2 : 1; __u32 g : 1; __u32 u : 1; __u32 l : 1; __u32 key : 4; __u32 reserved3 : 8; __u32 t : 1; __u32 rgs : 3; __u32 m : 4; __u32 n : 1; __u32 mae : 1; __u32 reserved4 : 2; __u32 c : 1; __u32 r : 1; __u32 b : 1; __u32 j : 1; __u32 e : 1; __u32 x : 1; __u32 reserved5 : 2; __u32 bpxn : 1; __u32 bpxt : 1; __u32 bpti : 1; __u32 bpni : 1; __u32 reserved6 : 2; __u32 d : 1; __u32 f : 1; __u32 ic : 4; __u32 dc : 4; __u64 reserved7; __u64 sf; __u64 rsic; __u64 reserved8; } __attribute__((__packed__, __aligned__(8))); static inline void load_runtime_instr_cb(struct runtime_instr_cb *cb) { asm volatile(".insn rsy,0xeb0000000060,0,0,%0" /* LRIC */ : : "Q" (*cb)); } static inline void store_runtime_instr_cb(struct runtime_instr_cb *cb) { asm volatile(".insn rsy,0xeb0000000061,0,0,%0" /* STRIC */ : "=Q" (*cb) : : "cc"); } #endif /* _S390_UAPI_RUNTIME_INSTR_H */ PK ! k��$ �$ sie.hnu �[��� /* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */ #ifndef _UAPI_ASM_S390_SIE_H #define _UAPI_ASM_S390_SIE_H #define diagnose_codes \ { 0x10, "DIAG (0x10) release pages" }, \ { 0x44, "DIAG (0x44) time slice end" }, \ { 0x9c, "DIAG (0x9c) time slice end directed" }, \ { 0x204, "DIAG (0x204) logical-cpu utilization" }, \ { 0x258, "DIAG (0x258) page-reference services" }, \ { 0x288, "DIAG (0x288) watchdog functions" }, \ { 0x308, "DIAG (0x308) ipl functions" }, \ { 0x500, "DIAG (0x500) KVM virtio functions" }, \ { 0x501, "DIAG (0x501) KVM breakpoint" } #define sigp_order_codes \ { 0x01, "SIGP sense" }, \ { 0x02, "SIGP external call" }, \ { 0x03, "SIGP emergency signal" }, \ { 0x04, "SIGP start" }, \ { 0x05, "SIGP stop" }, \ { 0x06, "SIGP restart" }, \ { 0x09, "SIGP stop and store status" }, \ { 0x0b, "SIGP initial cpu reset" }, \ { 0x0c, "SIGP cpu reset" }, \ { 0x0d, "SIGP set prefix" }, \ { 0x0e, "SIGP store status at address" }, \ { 0x12, "SIGP set architecture" }, \ { 0x13, "SIGP conditional emergency signal" }, \ { 0x15, "SIGP sense running" }, \ { 0x16, "SIGP set multithreading"}, \ { 0x17, "SIGP store additional status at address"} #define icpt_prog_codes \ { 0x0001, "Prog Operation" }, \ { 0x0002, "Prog Privileged Operation" }, \ { 0x0003, "Prog Execute" }, \ { 0x0004, "Prog Protection" }, \ { 0x0005, "Prog Addressing" }, \ { 0x0006, "Prog Specification" }, \ { 0x0007, "Prog Data" }, \ { 0x0008, "Prog Fixedpoint overflow" }, \ { 0x0009, "Prog Fixedpoint divide" }, \ { 0x000A, "Prog Decimal overflow" }, \ { 0x000B, "Prog Decimal divide" }, \ { 0x000C, "Prog HFP exponent overflow" }, \ { 0x000D, "Prog HFP exponent underflow" }, \ { 0x000E, "Prog HFP significance" }, \ { 0x000F, "Prog HFP divide" }, \ { 0x0010, "Prog Segment translation" }, \ { 0x0011, "Prog Page translation" }, \ { 0x0012, "Prog Translation specification" }, \ { 0x0013, "Prog Special operation" }, \ { 0x0015, "Prog Operand" }, \ { 0x0016, "Prog Trace table" }, \ { 0x0017, "Prog ASNtranslation specification" }, \ { 0x001C, "Prog Spaceswitch event" }, \ { 0x001D, "Prog HFP square root" }, \ { 0x001F, "Prog PCtranslation specification" }, \ { 0x0020, "Prog AFX translation" }, \ { 0x0021, "Prog ASX translation" }, \ { 0x0022, "Prog LX translation" }, \ { 0x0023, "Prog EX translation" }, \ { 0x0024, "Prog Primary authority" }, \ { 0x0025, "Prog Secondary authority" }, \ { 0x0026, "Prog LFXtranslation exception" }, \ { 0x0027, "Prog LSXtranslation exception" }, \ { 0x0028, "Prog ALET specification" }, \ { 0x0029, "Prog ALEN translation" }, \ { 0x002A, "Prog ALE sequence" }, \ { 0x002B, "Prog ASTE validity" }, \ { 0x002C, "Prog ASTE sequence" }, \ { 0x002D, "Prog Extended authority" }, \ { 0x002E, "Prog LSTE sequence" }, \ { 0x002F, "Prog ASTE instance" }, \ { 0x0030, "Prog Stack full" }, \ { 0x0031, "Prog Stack empty" }, \ { 0x0032, "Prog Stack specification" }, \ { 0x0033, "Prog Stack type" }, \ { 0x0034, "Prog Stack operation" }, \ { 0x0039, "Prog Region first translation" }, \ { 0x003A, "Prog Region second translation" }, \ { 0x003B, "Prog Region third translation" }, \ { 0x0040, "Prog Monitor event" }, \ { 0x0080, "Prog PER event" }, \ { 0x0119, "Prog Crypto operation" } #define exit_code_ipa0(ipa0, opcode, mnemonic) \ { (ipa0 << 8 | opcode), #ipa0 " " mnemonic } #define exit_code(opcode, mnemonic) \ { opcode, mnemonic } #define icpt_insn_codes \ exit_code_ipa0(0x01, 0x01, "PR"), \ exit_code_ipa0(0x01, 0x04, "PTFF"), \ exit_code_ipa0(0x01, 0x07, "SCKPF"), \ exit_code_ipa0(0xAA, 0x00, "RINEXT"), \ exit_code_ipa0(0xAA, 0x01, "RION"), \ exit_code_ipa0(0xAA, 0x02, "TRIC"), \ exit_code_ipa0(0xAA, 0x03, "RIOFF"), \ exit_code_ipa0(0xAA, 0x04, "RIEMIT"), \ exit_code_ipa0(0xB2, 0x02, "STIDP"), \ exit_code_ipa0(0xB2, 0x04, "SCK"), \ exit_code_ipa0(0xB2, 0x05, "STCK"), \ exit_code_ipa0(0xB2, 0x06, "SCKC"), \ exit_code_ipa0(0xB2, 0x07, "STCKC"), \ exit_code_ipa0(0xB2, 0x08, "SPT"), \ exit_code_ipa0(0xB2, 0x09, "STPT"), \ exit_code_ipa0(0xB2, 0x0d, "PTLB"), \ exit_code_ipa0(0xB2, 0x10, "SPX"), \ exit_code_ipa0(0xB2, 0x11, "STPX"), \ exit_code_ipa0(0xB2, 0x12, "STAP"), \ exit_code_ipa0(0xB2, 0x14, "SIE"), \ exit_code_ipa0(0xB2, 0x16, "SETR"), \ exit_code_ipa0(0xB2, 0x17, "STETR"), \ exit_code_ipa0(0xB2, 0x18, "PC"), \ exit_code_ipa0(0xB2, 0x20, "SERVC"), \ exit_code_ipa0(0xB2, 0x21, "IPTE"), \ exit_code_ipa0(0xB2, 0x28, "PT"), \ exit_code_ipa0(0xB2, 0x29, "ISKE"), \ exit_code_ipa0(0xB2, 0x2a, "RRBE"), \ exit_code_ipa0(0xB2, 0x2b, "SSKE"), \ exit_code_ipa0(0xB2, 0x2c, "TB"), \ exit_code_ipa0(0xB2, 0x2e, "PGIN"), \ exit_code_ipa0(0xB2, 0x2f, "PGOUT"), \ exit_code_ipa0(0xB2, 0x30, "CSCH"), \ exit_code_ipa0(0xB2, 0x31, "HSCH"), \ exit_code_ipa0(0xB2, 0x32, "MSCH"), \ exit_code_ipa0(0xB2, 0x33, "SSCH"), \ exit_code_ipa0(0xB2, 0x34, "STSCH"), \ exit_code_ipa0(0xB2, 0x35, "TSCH"), \ exit_code_ipa0(0xB2, 0x36, "TPI"), \ exit_code_ipa0(0xB2, 0x37, "SAL"), \ exit_code_ipa0(0xB2, 0x38, "RSCH"), \ exit_code_ipa0(0xB2, 0x39, "STCRW"), \ exit_code_ipa0(0xB2, 0x3a, "STCPS"), \ exit_code_ipa0(0xB2, 0x3b, "RCHP"), \ exit_code_ipa0(0xB2, 0x3c, "SCHM"), \ exit_code_ipa0(0xB2, 0x40, "BAKR"), \ exit_code_ipa0(0xB2, 0x48, "PALB"), \ exit_code_ipa0(0xB2, 0x4c, "TAR"), \ exit_code_ipa0(0xB2, 0x50, "CSP"), \ exit_code_ipa0(0xB2, 0x54, "MVPG"), \ exit_code_ipa0(0xB2, 0x56, "STHYI"), \ exit_code_ipa0(0xB2, 0x58, "BSG"), \ exit_code_ipa0(0xB2, 0x5a, "BSA"), \ exit_code_ipa0(0xB2, 0x5f, "CHSC"), \ exit_code_ipa0(0xB2, 0x74, "SIGA"), \ exit_code_ipa0(0xB2, 0x76, "XSCH"), \ exit_code_ipa0(0xB2, 0x78, "STCKE"), \ exit_code_ipa0(0xB2, 0x7c, "STCKF"), \ exit_code_ipa0(0xB2, 0x7d, "STSI"), \ exit_code_ipa0(0xB2, 0xb0, "STFLE"), \ exit_code_ipa0(0xB2, 0xb1, "STFL"), \ exit_code_ipa0(0xB2, 0xb2, "LPSWE"), \ exit_code_ipa0(0xB2, 0xf8, "TEND"), \ exit_code_ipa0(0xB2, 0xfc, "TABORT"), \ exit_code_ipa0(0xB9, 0x1e, "KMAC"), \ exit_code_ipa0(0xB9, 0x28, "PCKMO"), \ exit_code_ipa0(0xB9, 0x2a, "KMF"), \ exit_code_ipa0(0xB9, 0x2b, "KMO"), \ exit_code_ipa0(0xB9, 0x2d, "KMCTR"), \ exit_code_ipa0(0xB9, 0x2e, "KM"), \ exit_code_ipa0(0xB9, 0x2f, "KMC"), \ exit_code_ipa0(0xB9, 0x3e, "KIMD"), \ exit_code_ipa0(0xB9, 0x3f, "KLMD"), \ exit_code_ipa0(0xB9, 0x8a, "CSPG"), \ exit_code_ipa0(0xB9, 0x8d, "EPSW"), \ exit_code_ipa0(0xB9, 0x8e, "IDTE"), \ exit_code_ipa0(0xB9, 0x8f, "CRDTE"), \ exit_code_ipa0(0xB9, 0x9c, "EQBS"), \ exit_code_ipa0(0xB9, 0xa2, "PTF"), \ exit_code_ipa0(0xB9, 0xab, "ESSA"), \ exit_code_ipa0(0xB9, 0xae, "RRBM"), \ exit_code_ipa0(0xB9, 0xaf, "PFMF"), \ exit_code_ipa0(0xE3, 0x03, "LRAG"), \ exit_code_ipa0(0xE3, 0x13, "LRAY"), \ exit_code_ipa0(0xE3, 0x25, "NTSTG"), \ exit_code_ipa0(0xE5, 0x00, "LASP"), \ exit_code_ipa0(0xE5, 0x01, "TPROT"), \ exit_code_ipa0(0xE5, 0x60, "TBEGIN"), \ exit_code_ipa0(0xE5, 0x61, "TBEGINC"), \ exit_code_ipa0(0xEB, 0x25, "STCTG"), \ exit_code_ipa0(0xEB, 0x2f, "LCTLG"), \ exit_code_ipa0(0xEB, 0x60, "LRIC"), \ exit_code_ipa0(0xEB, 0x61, "STRIC"), \ exit_code_ipa0(0xEB, 0x62, "MRIC"), \ exit_code_ipa0(0xEB, 0x8a, "SQBS"), \ exit_code_ipa0(0xC8, 0x01, "ECTG"), \ exit_code(0x0a, "SVC"), \ exit_code(0x80, "SSM"), \ exit_code(0x82, "LPSW"), \ exit_code(0x83, "DIAG"), \ exit_code(0xae, "SIGP"), \ exit_code(0xac, "STNSM"), \ exit_code(0xad, "STOSM"), \ exit_code(0xb1, "LRA"), \ exit_code(0xb6, "STCTL"), \ exit_code(0xb7, "LCTL"), \ exit_code(0xee, "PLO") #define sie_intercept_code \ { 0x00, "Host interruption" }, \ { 0x04, "Instruction" }, \ { 0x08, "Program interruption" }, \ { 0x0c, "Instruction and program interruption" }, \ { 0x10, "External request" }, \ { 0x14, "External interruption" }, \ { 0x18, "I/O request" }, \ { 0x1c, "Wait state" }, \ { 0x20, "Validity" }, \ { 0x28, "Stop request" }, \ { 0x2c, "Operation exception" }, \ { 0x38, "Partial-execution" }, \ { 0x3c, "I/O interruption" }, \ { 0x40, "I/O instruction" }, \ { 0x48, "Timing subset" } /* * This is the simple interceptable instructions decoder. * * It will be used as userspace interface and it can be used in places * that does not allow to use general decoder functions, * such as trace events declarations. * * Some userspace tools may want to parse this code * and would be confused by switch(), if() and other statements, * but they can understand conditional operator. */ #define INSN_DECODE_IPA0(ipa0, insn, rshift, mask) \ (insn >> 56) == (ipa0) ? \ ((ipa0 << 8) | ((insn >> rshift) & mask)) : #define INSN_DECODE(insn) (insn >> 56) /* * The macro icpt_insn_decoder() takes an intercepted instruction * and returns a key, which can be used to find a mnemonic name * of the instruction in the icpt_insn_codes table. */ #define icpt_insn_decoder(insn) ( \ INSN_DECODE_IPA0(0x01, insn, 48, 0xff) \ INSN_DECODE_IPA0(0xaa, insn, 48, 0x0f) \ INSN_DECODE_IPA0(0xb2, insn, 48, 0xff) \ INSN_DECODE_IPA0(0xb9, insn, 48, 0xff) \ INSN_DECODE_IPA0(0xe3, insn, 48, 0xff) \ INSN_DECODE_IPA0(0xe5, insn, 48, 0xff) \ INSN_DECODE_IPA0(0xeb, insn, 16, 0xff) \ INSN_DECODE_IPA0(0xc8, insn, 48, 0x0f) \ INSN_DECODE(insn)) #endif /* _UAPI_ASM_S390_SIE_H */ PK ! H%v~� � kvm_para.hnu �[��� /* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */ /* * User API definitions for paravirtual devices on s390 * * Copyright IBM Corp. 2008 * * Author(s): Christian Borntraeger <borntraeger@de.ibm.com> */ PK ! lb��� � chpid.hnu �[��� /* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */ /* * Copyright IBM Corp. 2007, 2012 * Author(s): Peter Oberparleiter <peter.oberparleiter@de.ibm.com> */ #ifndef _UAPI_ASM_S390_CHPID_H #define _UAPI_ASM_S390_CHPID_H #include <linux/string.h> #include <linux/types.h> #define __MAX_CHPID 255 struct chp_id { __u8 reserved1; __u8 cssid; __u8 reserved2; __u8 id; } __attribute__((packed)); #endif /* _UAPI_ASM_S390_CHPID_H */ PK ! �w� � perf_regs.hnu �[��� /* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */ /* Copyright (C) 2019 Hangzhou C-SKY Microsystems co.,ltd. */ #ifndef _ASM_RISCV_PERF_REGS_H #define _ASM_RISCV_PERF_REGS_H enum perf_event_riscv_regs { PERF_REG_RISCV_PC, PERF_REG_RISCV_RA, PERF_REG_RISCV_SP, PERF_REG_RISCV_GP, PERF_REG_RISCV_TP, PERF_REG_RISCV_T0, PERF_REG_RISCV_T1, PERF_REG_RISCV_T2, PERF_REG_RISCV_S0, PERF_REG_RISCV_S1, PERF_REG_RISCV_A0, PERF_REG_RISCV_A1, PERF_REG_RISCV_A2, PERF_REG_RISCV_A3, PERF_REG_RISCV_A4, PERF_REG_RISCV_A5, PERF_REG_RISCV_A6, PERF_REG_RISCV_A7, PERF_REG_RISCV_S2, PERF_REG_RISCV_S3, PERF_REG_RISCV_S4, PERF_REG_RISCV_S5, PERF_REG_RISCV_S6, PERF_REG_RISCV_S7, PERF_REG_RISCV_S8, PERF_REG_RISCV_S9, PERF_REG_RISCV_S10, PERF_REG_RISCV_S11, PERF_REG_RISCV_T3, PERF_REG_RISCV_T4, PERF_REG_RISCV_T5, PERF_REG_RISCV_T6, PERF_REG_RISCV_MAX, }; #endif /* _ASM_RISCV_PERF_REGS_H */ PK ! �Q8�� � uvdevice.hnu �[��� /* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */ /* * Copyright IBM Corp. 2022 * Author(s): Steffen Eiden <seiden@linux.ibm.com> */ #ifndef __S390_ASM_UVDEVICE_H #define __S390_ASM_UVDEVICE_H #include <linux/types.h> struct uvio_ioctl_cb { __u32 flags; __u16 uv_rc; /* UV header rc value */ __u16 uv_rrc; /* UV header rrc value */ __u64 argument_addr; /* Userspace address of uvio argument */ __u32 argument_len; __u8 reserved14[0x40 - 0x14]; /* must be zero */ }; #define UVIO_ATT_USER_DATA_LEN 0x100 #define UVIO_ATT_UID_LEN 0x10 struct uvio_attest { __u64 arcb_addr; /* 0x0000 */ __u64 meas_addr; /* 0x0008 */ __u64 add_data_addr; /* 0x0010 */ __u8 user_data[UVIO_ATT_USER_DATA_LEN]; /* 0x0018 */ __u8 config_uid[UVIO_ATT_UID_LEN]; /* 0x0118 */ __u32 arcb_len; /* 0x0128 */ __u32 meas_len; /* 0x012c */ __u32 add_data_len; /* 0x0130 */ __u16 user_data_len; /* 0x0134 */ __u16 reserved136; /* 0x0136 */ }; /* * The following max values define an upper length for the IOCTL in/out buffers. * However, they do not represent the maximum the Ultravisor allows which is * often way smaller. By allowing larger buffer sizes we hopefully do not need * to update the code with every machine update. It is therefore possible for * userspace to request more memory than actually used by kernel/UV. */ #define UVIO_ATT_ARCB_MAX_LEN 0x100000 #define UVIO_ATT_MEASUREMENT_MAX_LEN 0x8000 #define UVIO_ATT_ADDITIONAL_MAX_LEN 0x8000 #define UVIO_DEVICE_NAME "uv" #define UVIO_TYPE_UVC 'u' #define UVIO_IOCTL_ATT _IOWR(UVIO_TYPE_UVC, 0x01, struct uvio_ioctl_cb) #endif /* __S390_ASM_UVDEVICE_H */ PK ! 6�A| | schid.hnu �[��� /* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */ #ifndef _UAPIASM_SCHID_H #define _UAPIASM_SCHID_H #include <linux/types.h> #ifndef __ASSEMBLY__ struct subchannel_id { __u32 cssid : 8; __u32 : 4; __u32 m : 1; __u32 ssid : 2; __u32 one : 1; __u32 sch_no : 16; } __attribute__ ((packed, aligned(4))); #endif /* __ASSEMBLY__ */ #endif /* _UAPIASM_SCHID_H */ PK ! �z�+ + kvm.hnu �[��� /* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */ /* * This file is subject to the terms and conditions of the GNU General Public * License. See the file "COPYING" in the main directory of this archive * for more details. * * Copyright (C) 2012 MIPS Technologies, Inc. All rights reserved. * Copyright (C) 2013 Cavium, Inc. * Authors: Sanjay Lal <sanjayl@kymasys.com> */ #ifndef __LINUX_KVM_MIPS_H #define __LINUX_KVM_MIPS_H #include <linux/types.h> /* * KVM MIPS specific structures and definitions. * * Some parts derived from the x86 version of this file. */ #define __KVM_HAVE_READONLY_MEM #define KVM_COALESCED_MMIO_PAGE_OFFSET 1 /* * for KVM_GET_REGS and KVM_SET_REGS * * If Config[AT] is zero (32-bit CPU), the register contents are * stored in the lower 32-bits of the struct kvm_regs fields and sign * extended to 64-bits. */ struct kvm_regs { /* out (KVM_GET_REGS) / in (KVM_SET_REGS) */ __u64 gpr[32]; __u64 hi; __u64 lo; __u64 pc; }; /* * for KVM_GET_FPU and KVM_SET_FPU */ struct kvm_fpu { }; /* * For MIPS, we use KVM_SET_ONE_REG and KVM_GET_ONE_REG to access various * registers. The id field is broken down as follows: * * bits[63..52] - As per linux/kvm.h * bits[51..32] - Must be zero. * bits[31..16] - Register set. * * Register set = 0: GP registers from kvm_regs (see definitions below). * * Register set = 1: CP0 registers. * bits[15..8] - COP0 register set. * * COP0 register set = 0: Main CP0 registers. * bits[7..3] - Register 'rd' index. * bits[2..0] - Register 'sel' index. * * COP0 register set = 1: MAARs. * bits[7..0] - MAAR index. * * Register set = 2: KVM specific registers (see definitions below). * * Register set = 3: FPU / MSA registers (see definitions below). * * Other sets registers may be added in the future. Each set would * have its own identifier in bits[31..16]. */ #define KVM_REG_MIPS_GP (KVM_REG_MIPS | 0x0000000000000000ULL) #define KVM_REG_MIPS_CP0 (KVM_REG_MIPS | 0x0000000000010000ULL) #define KVM_REG_MIPS_KVM (KVM_REG_MIPS | 0x0000000000020000ULL) #define KVM_REG_MIPS_FPU (KVM_REG_MIPS | 0x0000000000030000ULL) /* * KVM_REG_MIPS_GP - General purpose registers from kvm_regs. */ #define KVM_REG_MIPS_R0 (KVM_REG_MIPS_GP | KVM_REG_SIZE_U64 | 0) #define KVM_REG_MIPS_R1 (KVM_REG_MIPS_GP | KVM_REG_SIZE_U64 | 1) #define KVM_REG_MIPS_R2 (KVM_REG_MIPS_GP | KVM_REG_SIZE_U64 | 2) #define KVM_REG_MIPS_R3 (KVM_REG_MIPS_GP | KVM_REG_SIZE_U64 | 3) #define KVM_REG_MIPS_R4 (KVM_REG_MIPS_GP | KVM_REG_SIZE_U64 | 4) #define KVM_REG_MIPS_R5 (KVM_REG_MIPS_GP | KVM_REG_SIZE_U64 | 5) #define KVM_REG_MIPS_R6 (KVM_REG_MIPS_GP | KVM_REG_SIZE_U64 | 6) #define KVM_REG_MIPS_R7 (KVM_REG_MIPS_GP | KVM_REG_SIZE_U64 | 7) #define KVM_REG_MIPS_R8 (KVM_REG_MIPS_GP | KVM_REG_SIZE_U64 | 8) #define KVM_REG_MIPS_R9 (KVM_REG_MIPS_GP | KVM_REG_SIZE_U64 | 9) #define KVM_REG_MIPS_R10 (KVM_REG_MIPS_GP | KVM_REG_SIZE_U64 | 10) #define KVM_REG_MIPS_R11 (KVM_REG_MIPS_GP | KVM_REG_SIZE_U64 | 11) #define KVM_REG_MIPS_R12 (KVM_REG_MIPS_GP | KVM_REG_SIZE_U64 | 12) #define KVM_REG_MIPS_R13 (KVM_REG_MIPS_GP | KVM_REG_SIZE_U64 | 13) #define KVM_REG_MIPS_R14 (KVM_REG_MIPS_GP | KVM_REG_SIZE_U64 | 14) #define KVM_REG_MIPS_R15 (KVM_REG_MIPS_GP | KVM_REG_SIZE_U64 | 15) #define KVM_REG_MIPS_R16 (KVM_REG_MIPS_GP | KVM_REG_SIZE_U64 | 16) #define KVM_REG_MIPS_R17 (KVM_REG_MIPS_GP | KVM_REG_SIZE_U64 | 17) #define KVM_REG_MIPS_R18 (KVM_REG_MIPS_GP | KVM_REG_SIZE_U64 | 18) #define KVM_REG_MIPS_R19 (KVM_REG_MIPS_GP | KVM_REG_SIZE_U64 | 19) #define KVM_REG_MIPS_R20 (KVM_REG_MIPS_GP | KVM_REG_SIZE_U64 | 20) #define KVM_REG_MIPS_R21 (KVM_REG_MIPS_GP | KVM_REG_SIZE_U64 | 21) #define KVM_REG_MIPS_R22 (KVM_REG_MIPS_GP | KVM_REG_SIZE_U64 | 22) #define KVM_REG_MIPS_R23 (KVM_REG_MIPS_GP | KVM_REG_SIZE_U64 | 23) #define KVM_REG_MIPS_R24 (KVM_REG_MIPS_GP | KVM_REG_SIZE_U64 | 24) #define KVM_REG_MIPS_R25 (KVM_REG_MIPS_GP | KVM_REG_SIZE_U64 | 25) #define KVM_REG_MIPS_R26 (KVM_REG_MIPS_GP | KVM_REG_SIZE_U64 | 26) #define KVM_REG_MIPS_R27 (KVM_REG_MIPS_GP | KVM_REG_SIZE_U64 | 27) #define KVM_REG_MIPS_R28 (KVM_REG_MIPS_GP | KVM_REG_SIZE_U64 | 28) #define KVM_REG_MIPS_R29 (KVM_REG_MIPS_GP | KVM_REG_SIZE_U64 | 29) #define KVM_REG_MIPS_R30 (KVM_REG_MIPS_GP | KVM_REG_SIZE_U64 | 30) #define KVM_REG_MIPS_R31 (KVM_REG_MIPS_GP | KVM_REG_SIZE_U64 | 31) #define KVM_REG_MIPS_HI (KVM_REG_MIPS_GP | KVM_REG_SIZE_U64 | 32) #define KVM_REG_MIPS_LO (KVM_REG_MIPS_GP | KVM_REG_SIZE_U64 | 33) #define KVM_REG_MIPS_PC (KVM_REG_MIPS_GP | KVM_REG_SIZE_U64 | 34) /* * KVM_REG_MIPS_CP0 - Coprocessor 0 registers. */ #define KVM_REG_MIPS_MAAR (KVM_REG_MIPS_CP0 | (1 << 8)) #define KVM_REG_MIPS_CP0_MAAR(n) (KVM_REG_MIPS_MAAR | \ KVM_REG_SIZE_U64 | (n)) /* * KVM_REG_MIPS_KVM - KVM specific control registers. */ /* * CP0_Count control * DC: Set 0: Master disable CP0_Count and set COUNT_RESUME to now * Set 1: Master re-enable CP0_Count with unchanged bias, handling timer * interrupts since COUNT_RESUME * This can be used to freeze the timer to get a consistent snapshot of * the CP0_Count and timer interrupt pending state, while also resuming * safely without losing time or guest timer interrupts. * Other: Reserved, do not change. */ #define KVM_REG_MIPS_COUNT_CTL (KVM_REG_MIPS_KVM | KVM_REG_SIZE_U64 | 0) #define KVM_REG_MIPS_COUNT_CTL_DC 0x00000001 /* * CP0_Count resume monotonic nanoseconds * The monotonic nanosecond time of the last set of COUNT_CTL.DC (master * disable). Any reads and writes of Count related registers while * COUNT_CTL.DC=1 will appear to occur at this time. When COUNT_CTL.DC is * cleared again (master enable) any timer interrupts since this time will be * emulated. * Modifications to times in the future are rejected. */ #define KVM_REG_MIPS_COUNT_RESUME (KVM_REG_MIPS_KVM | KVM_REG_SIZE_U64 | 1) /* * CP0_Count rate in Hz * Specifies the rate of the CP0_Count timer in Hz. Modifications occur without * discontinuities in CP0_Count. */ #define KVM_REG_MIPS_COUNT_HZ (KVM_REG_MIPS_KVM | KVM_REG_SIZE_U64 | 2) /* * KVM_REG_MIPS_FPU - Floating Point and MIPS SIMD Architecture (MSA) registers. * * bits[15..8] - Register subset (see definitions below). * bits[7..5] - Must be zero. * bits[4..0] - Register number within register subset. */ #define KVM_REG_MIPS_FPR (KVM_REG_MIPS_FPU | 0x0000000000000000ULL) #define KVM_REG_MIPS_FCR (KVM_REG_MIPS_FPU | 0x0000000000000100ULL) #define KVM_REG_MIPS_MSACR (KVM_REG_MIPS_FPU | 0x0000000000000200ULL) /* * KVM_REG_MIPS_FPR - Floating point / Vector registers. */ #define KVM_REG_MIPS_FPR_32(n) (KVM_REG_MIPS_FPR | KVM_REG_SIZE_U32 | (n)) #define KVM_REG_MIPS_FPR_64(n) (KVM_REG_MIPS_FPR | KVM_REG_SIZE_U64 | (n)) #define KVM_REG_MIPS_VEC_128(n) (KVM_REG_MIPS_FPR | KVM_REG_SIZE_U128 | (n)) /* * KVM_REG_MIPS_FCR - Floating point control registers. */ #define KVM_REG_MIPS_FCR_IR (KVM_REG_MIPS_FCR | KVM_REG_SIZE_U32 | 0) #define KVM_REG_MIPS_FCR_CSR (KVM_REG_MIPS_FCR | KVM_REG_SIZE_U32 | 31) /* * KVM_REG_MIPS_MSACR - MIPS SIMD Architecture (MSA) control registers. */ #define KVM_REG_MIPS_MSA_IR (KVM_REG_MIPS_MSACR | KVM_REG_SIZE_U32 | 0) #define KVM_REG_MIPS_MSA_CSR (KVM_REG_MIPS_MSACR | KVM_REG_SIZE_U32 | 1) /* * KVM MIPS specific structures and definitions * */ struct kvm_debug_exit_arch { __u64 epc; }; /* for KVM_SET_GUEST_DEBUG */ struct kvm_guest_debug_arch { }; /* definition of registers in kvm_run */ struct kvm_sync_regs { }; /* dummy definition */ struct kvm_sregs { }; struct kvm_mips_interrupt { /* in */ __u32 cpu; __u32 irq; }; #endif /* __LINUX_KVM_MIPS_H */ PK ! �;� � sclp_ctl.hnu �[��� /* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */ /* * IOCTL interface for SCLP * * Copyright IBM Corp. 2012 * * Author: Michael Holzheu <holzheu@linux.vnet.ibm.com> */ #ifndef _ASM_SCLP_CTL_H #define _ASM_SCLP_CTL_H #include <linux/types.h> struct sclp_ctl_sccb { __u32 cmdw; __u64 sccb; } __attribute__((packed)); #define SCLP_CTL_IOCTL_MAGIC 0x10 #define SCLP_CTL_SCCB \ _IOWR(SCLP_CTL_IOCTL_MAGIC, 0x10, struct sclp_ctl_sccb) #endif PK ! ;�{� � guarded_storage.hnu �[��� /* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */ #ifndef _GUARDED_STORAGE_H #define _GUARDED_STORAGE_H #include <linux/types.h> struct gs_cb { __u64 reserved; __u64 gsd; __u64 gssm; __u64 gs_epl_a; }; struct gs_epl { __u8 pad1; union { __u8 gs_eam; struct { __u8 : 6; __u8 e : 1; __u8 b : 1; }; }; union { __u8 gs_eci; struct { __u8 tx : 1; __u8 cx : 1; __u8 : 5; __u8 in : 1; }; }; union { __u8 gs_eai; struct { __u8 : 1; __u8 t : 1; __u8 as : 2; __u8 ar : 4; }; }; __u32 pad2; __u64 gs_eha; __u64 gs_eia; __u64 gs_eoa; __u64 gs_eir; __u64 gs_era; }; #define GS_ENABLE 0 #define GS_DISABLE 1 #define GS_SET_BC_CB 2 #define GS_CLEAR_BC_CB 3 #define GS_BROADCAST 4 static inline void load_gs_cb(struct gs_cb *gs_cb) { asm volatile(".insn rxy,0xe3000000004d,0,%0" : : "Q" (*gs_cb)); } static inline void store_gs_cb(struct gs_cb *gs_cb) { asm volatile(".insn rxy,0xe30000000049,0,%0" : : "Q" (*gs_cb)); } static inline void save_gs_cb(struct gs_cb *gs_cb) { if (gs_cb) store_gs_cb(gs_cb); } static inline void restore_gs_cb(struct gs_cb *gs_cb) { if (gs_cb) load_gs_cb(gs_cb); } #endif /* _GUARDED_STORAGE_H */ PK ! J;�v� � hwctrset.hnu �[��� /* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */ /* * Copyright IBM Corp. 2021 * Interface implementation for communication with the CPU Measurement * counter facility device driver. * * Author(s): Thomas Richter <tmricht@linux.ibm.com> * * Define for ioctl() commands to communicate with the CPU Measurement * counter facility device driver. */ #ifndef _PERF_CPUM_CF_DIAG_H #define _PERF_CPUM_CF_DIAG_H #include <linux/ioctl.h> #include <linux/types.h> #define S390_HWCTR_DEVICE "hwctr" #define S390_HWCTR_START_VERSION 1 struct s390_ctrset_start { /* Set CPUs to operate on */ __u64 version; /* Version of interface */ __u64 data_bytes; /* # of bytes required */ __u64 cpumask_len; /* Length of CPU mask in bytes */ __u64 *cpumask; /* Pointer to CPU mask */ __u64 counter_sets; /* Bit mask of counter sets to get */ }; struct s390_ctrset_setdata { /* Counter set data */ __u32 set; /* Counter set number */ __u32 no_cnts; /* # of counters stored in cv[] */ __u64 cv[0]; /* Counter values (variable length) */ }; struct s390_ctrset_cpudata { /* Counter set data per CPU */ __u32 cpu_nr; /* CPU number */ __u32 no_sets; /* # of counters sets in data[] */ struct s390_ctrset_setdata data[0]; }; struct s390_ctrset_read { /* Structure to get all ctr sets */ __u64 no_cpus; /* Total # of CPUs data taken from */ struct s390_ctrset_cpudata data[0]; }; #define S390_HWCTR_MAGIC 'C' /* Random magic # for ioctls */ #define S390_HWCTR_START _IOWR(S390_HWCTR_MAGIC, 1, struct s390_ctrset_start) #define S390_HWCTR_STOP _IO(S390_HWCTR_MAGIC, 2) #define S390_HWCTR_READ _IOWR(S390_HWCTR_MAGIC, 3, struct s390_ctrset_read) #endif PK ! ��� cmb.hnu �[��� /* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */ #ifndef _UAPIS390_CMB_H #define _UAPIS390_CMB_H #include <linux/types.h> /** * struct cmbdata - channel measurement block data for user space * @size: size of the stored data * @elapsed_time: time since last sampling * @ssch_rsch_count: number of ssch and rsch * @sample_count: number of samples * @device_connect_time: time of device connect * @function_pending_time: time of function pending * @device_disconnect_time: time of device disconnect * @control_unit_queuing_time: time of control unit queuing * @device_active_only_time: time of device active only * @device_busy_time: time of device busy (ext. format) * @initial_command_response_time: initial command response time (ext. format) * * All values are stored as 64 bit for simplicity, especially * in 32 bit emulation mode. All time values are normalized to * nanoseconds. * Currently, two formats are known, which differ by the size of * this structure, i.e. the last two members are only set when * the extended channel measurement facility (first shipped in * z990 machines) is activated. * Potentially, more fields could be added, which would result in a * new ioctl number. */ struct cmbdata { __u64 size; __u64 elapsed_time; /* basic and exended format: */ __u64 ssch_rsch_count; __u64 sample_count; __u64 device_connect_time; __u64 function_pending_time; __u64 device_disconnect_time; __u64 control_unit_queuing_time; __u64 device_active_only_time; /* extended format only: */ __u64 device_busy_time; __u64 initial_command_response_time; }; /* enable channel measurement */ #define BIODASDCMFENABLE _IO(DASD_IOCTL_LETTER, 32) /* enable channel measurement */ #define BIODASDCMFDISABLE _IO(DASD_IOCTL_LETTER, 33) /* read channel measurement data */ #define BIODASDREADALLCMB _IOWR(DASD_IOCTL_LETTER, 33, struct cmbdata) #endif /* _UAPIS390_CMB_H */ PK ! /!�� bpf_perf_event.hnu �[��� /* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */ #ifndef _UAPI__ASM_BPF_PERF_EVENT_H__ #define _UAPI__ASM_BPF_PERF_EVENT_H__ #include <asm/ptrace.h> typedef struct user_regs_struct bpf_user_pt_regs_t; #endif /* _UAPI__ASM_BPF_PERF_EVENT_H__ */ PK ! ��Xf f hypfs.hnu �[��� /* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */ /* * Structures for hypfs interface * * Copyright IBM Corp. 2013 * * Author: Martin Schwidefsky <schwidefsky@de.ibm.com> */ #ifndef _ASM_HYPFS_H #define _ASM_HYPFS_H #include <linux/types.h> /* * IOCTL for binary interface /sys/kernel/debug/diag_304 */ struct hypfs_diag304 { __u32 args[2]; __u64 data; __u64 rc; } __attribute__((packed)); #define HYPFS_IOCTL_MAGIC 0x10 #define HYPFS_DIAG304 \ _IOWR(HYPFS_IOCTL_MAGIC, 0x20, struct hypfs_diag304) /* * Structures for binary interface /sys/kernel/debug/diag_0c */ struct hypfs_diag0c_hdr { __u64 len; /* Length of diag0c buffer without header */ __u16 version; /* Version of header */ char reserved1[6]; /* Reserved */ char tod_ext[16]; /* TOD clock for diag0c */ __u64 count; /* Number of entries (CPUs) in diag0c array */ char reserved2[24]; /* Reserved */ }; struct hypfs_diag0c_entry { char date[8]; /* MM/DD/YY in EBCDIC */ char time[8]; /* HH:MM:SS in EBCDIC */ __u64 virtcpu; /* Virtual time consumed by the virt CPU (us) */ __u64 totalproc; /* Total of virtual and simulation time (us) */ __u32 cpu; /* Linux logical CPU number */ __u32 reserved; /* Align to 8 byte */ }; struct hypfs_diag0c_data { struct hypfs_diag0c_hdr hdr; /* 64 byte header */ struct hypfs_diag0c_entry entry[]; /* diag0c entry array */ }; #endif PK ! �#Ɨ/ / qeth.hnu �[��� /* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */ /* * ioctl definitions for qeth driver * * Copyright IBM Corp. 2004 * * Author(s): Thomas Spatzier <tspat@de.ibm.com> * */ #ifndef __ASM_S390_QETH_IOCTL_H__ #define __ASM_S390_QETH_IOCTL_H__ #include <linux/types.h> #include <linux/ioctl.h> #define SIOC_QETH_ARP_SET_NO_ENTRIES (SIOCDEVPRIVATE) #define SIOC_QETH_ARP_QUERY_INFO (SIOCDEVPRIVATE + 1) #define SIOC_QETH_ARP_ADD_ENTRY (SIOCDEVPRIVATE + 2) #define SIOC_QETH_ARP_REMOVE_ENTRY (SIOCDEVPRIVATE + 3) #define SIOC_QETH_ARP_FLUSH_CACHE (SIOCDEVPRIVATE + 4) #define SIOC_QETH_ADP_SET_SNMP_CONTROL (SIOCDEVPRIVATE + 5) #define SIOC_QETH_GET_CARD_TYPE (SIOCDEVPRIVATE + 6) #define SIOC_QETH_QUERY_OAT (SIOCDEVPRIVATE + 7) struct qeth_arp_cache_entry { __u8 macaddr[6]; __u8 reserved1[2]; __u8 ipaddr[16]; /* for both IPv4 and IPv6 */ __u8 reserved2[32]; } __attribute__ ((packed)); enum qeth_arp_ipaddrtype { QETHARP_IP_ADDR_V4 = 1, QETHARP_IP_ADDR_V6 = 2, }; struct qeth_arp_entrytype { __u8 mac; __u8 ip; } __attribute__((packed)); #define QETH_QARP_MEDIASPECIFIC_BYTES 32 #define QETH_QARP_MACADDRTYPE_BYTES 1 struct qeth_arp_qi_entry7 { __u8 media_specific[QETH_QARP_MEDIASPECIFIC_BYTES]; struct qeth_arp_entrytype type; __u8 macaddr[6]; __u8 ipaddr[4]; } __attribute__((packed)); struct qeth_arp_qi_entry7_ipv6 { __u8 media_specific[QETH_QARP_MEDIASPECIFIC_BYTES]; struct qeth_arp_entrytype type; __u8 macaddr[6]; __u8 ipaddr[16]; } __attribute__((packed)); struct qeth_arp_qi_entry7_short { struct qeth_arp_entrytype type; __u8 macaddr[6]; __u8 ipaddr[4]; } __attribute__((packed)); struct qeth_arp_qi_entry7_short_ipv6 { struct qeth_arp_entrytype type; __u8 macaddr[6]; __u8 ipaddr[16]; } __attribute__((packed)); struct qeth_arp_qi_entry5 { __u8 media_specific[QETH_QARP_MEDIASPECIFIC_BYTES]; struct qeth_arp_entrytype type; __u8 ipaddr[4]; } __attribute__((packed)); struct qeth_arp_qi_entry5_ipv6 { __u8 media_specific[QETH_QARP_MEDIASPECIFIC_BYTES]; struct qeth_arp_entrytype type; __u8 ipaddr[16]; } __attribute__((packed)); struct qeth_arp_qi_entry5_short { struct qeth_arp_entrytype type; __u8 ipaddr[4]; } __attribute__((packed)); struct qeth_arp_qi_entry5_short_ipv6 { struct qeth_arp_entrytype type; __u8 ipaddr[16]; } __attribute__((packed)); /* * can be set by user if no "media specific information" is wanted * -> saves a lot of space in user space buffer */ #define QETH_QARP_STRIP_ENTRIES 0x8000 #define QETH_QARP_WITH_IPV6 0x4000 #define QETH_QARP_REQUEST_MASK 0x00ff /* data sent to user space as result of query arp ioctl */ #define QETH_QARP_USER_DATA_SIZE 20000 #define QETH_QARP_MASK_OFFSET 4 #define QETH_QARP_ENTRIES_OFFSET 6 struct qeth_arp_query_user_data { union { __u32 data_len; /* set by user space program */ __u32 no_entries; /* set by kernel */ } u; __u16 mask_bits; char *entries; } __attribute__((packed)); struct qeth_query_oat_data { __u32 command; __u32 buffer_len; __u32 response_len; __u64 ptr; }; #endif /* __ASM_S390_QETH_IOCTL_H__ */ PK ! S�#� � vmcp.hnu �[��� /* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */ /* * Copyright IBM Corp. 2004, 2005 * Interface implementation for communication with the z/VM control program * Version 1.0 * Author(s): Christian Borntraeger <cborntra@de.ibm.com> * * * z/VMs CP offers the possibility to issue commands via the diagnose code 8 * this driver implements a character device that issues these commands and * returns the answer of CP. * * The idea of this driver is based on cpint from Neale Ferguson */ #ifndef _UAPI_ASM_VMCP_H #define _UAPI_ASM_VMCP_H #include <linux/ioctl.h> #define VMCP_GETCODE _IOR(0x10, 1, int) #define VMCP_SETBUF _IOW(0x10, 2, int) #define VMCP_GETSIZE _IOR(0x10, 3, int) #endif /* _UAPI_ASM_VMCP_H */ PK ! ٘u7 tape390.hnu �[��� /* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */ /************************************************************************* * * enables user programs to display messages and control encryption * on s390 tape devices * * Copyright IBM Corp. 2001, 2006 * Author(s): Michael Holzheu <holzheu@de.ibm.com> * *************************************************************************/ #ifndef _TAPE390_H #define _TAPE390_H #define TAPE390_DISPLAY _IOW('d', 1, struct display_struct) /* * The TAPE390_DISPLAY ioctl calls the Load Display command * which transfers 17 bytes of data from the channel to the subsystem: * - 1 format control byte, and * - two 8-byte messages * * Format control byte: * 0-2: New Message Overlay * 3: Alternate Messages * 4: Blink Message * 5: Display Low/High Message * 6: Reserved * 7: Automatic Load Request * */ typedef struct display_struct { char cntrl; char message1[8]; char message2[8]; } display_struct; /* * Tape encryption support */ struct tape390_crypt_info { char capability; char status; char medium_status; } __attribute__ ((packed)); /* Macros for "capable" field */ #define TAPE390_CRYPT_SUPPORTED_MASK 0x01 #define TAPE390_CRYPT_SUPPORTED(x) \ ((x.capability & TAPE390_CRYPT_SUPPORTED_MASK)) /* Macros for "status" field */ #define TAPE390_CRYPT_ON_MASK 0x01 #define TAPE390_CRYPT_ON(x) (((x.status) & TAPE390_CRYPT_ON_MASK)) /* Macros for "medium status" field */ #define TAPE390_MEDIUM_LOADED_MASK 0x01 #define TAPE390_MEDIUM_ENCRYPTED_MASK 0x02 #define TAPE390_MEDIUM_ENCRYPTED(x) \ (((x.medium_status) & TAPE390_MEDIUM_ENCRYPTED_MASK)) #define TAPE390_MEDIUM_LOADED(x) \ (((x.medium_status) & TAPE390_MEDIUM_LOADED_MASK)) /* * The TAPE390_CRYPT_SET ioctl is used to switch on/off encryption. * The "encryption_capable" and "tape_status" fields are ignored for this ioctl! */ #define TAPE390_CRYPT_SET _IOW('d', 2, struct tape390_crypt_info) /* * The TAPE390_CRYPT_QUERY ioctl is used to query the encryption state. */ #define TAPE390_CRYPT_QUERY _IOR('d', 3, struct tape390_crypt_info) /* Values for "kekl1/2_type" and "kekl1/2_type_on_tape" fields */ #define TAPE390_KEKL_TYPE_NONE 0 #define TAPE390_KEKL_TYPE_LABEL 1 #define TAPE390_KEKL_TYPE_HASH 2 struct tape390_kekl { unsigned char type; unsigned char type_on_tape; char label[65]; } __attribute__ ((packed)); struct tape390_kekl_pair { struct tape390_kekl kekl[2]; } __attribute__ ((packed)); /* * The TAPE390_KEKL_SET ioctl is used to set Key Encrypting Key labels. */ #define TAPE390_KEKL_SET _IOW('d', 4, struct tape390_kekl_pair) /* * The TAPE390_KEKL_QUERY ioctl is used to query Key Encrypting Key labels. */ #define TAPE390_KEKL_QUERY _IOR('d', 5, struct tape390_kekl_pair) #endif PK ! ��]YQ Q pkey.hnu �[��� /* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */ /* * Userspace interface to the pkey device driver * * Copyright IBM Corp. 2017, 2019 * * Author: Harald Freudenberger <freude@de.ibm.com> * */ #ifndef _UAPI_PKEY_H #define _UAPI_PKEY_H #include <linux/ioctl.h> #include <linux/types.h> /* * Ioctl calls supported by the pkey device driver */ #define PKEY_IOCTL_MAGIC 'p' #define SECKEYBLOBSIZE 64 /* secure key blob size is always 64 bytes */ #define PROTKEYBLOBSIZE 80 /* protected key blob size is always 80 bytes */ #define MAXPROTKEYSIZE 64 /* a protected key blob may be up to 64 bytes */ #define MAXCLRKEYSIZE 32 /* a clear key value may be up to 32 bytes */ #define MAXAESCIPHERKEYSIZE 136 /* our aes cipher keys have always 136 bytes */ #define MINEP11AESKEYBLOBSIZE 256 /* min EP11 AES key blob size */ #define MAXEP11AESKEYBLOBSIZE 320 /* max EP11 AES key blob size */ /* Minimum size of a key blob */ #define MINKEYBLOBSIZE SECKEYBLOBSIZE /* defines for the type field within the pkey_protkey struct */ #define PKEY_KEYTYPE_AES_128 1 #define PKEY_KEYTYPE_AES_192 2 #define PKEY_KEYTYPE_AES_256 3 #define PKEY_KEYTYPE_ECC 4 /* the newer ioctls use a pkey_key_type enum for type information */ enum pkey_key_type { PKEY_TYPE_CCA_DATA = (__u32) 1, PKEY_TYPE_CCA_CIPHER = (__u32) 2, PKEY_TYPE_EP11 = (__u32) 3, PKEY_TYPE_CCA_ECC = (__u32) 0x1f, PKEY_TYPE_EP11_AES = (__u32) 6, PKEY_TYPE_EP11_ECC = (__u32) 7, }; /* the newer ioctls use a pkey_key_size enum for key size information */ enum pkey_key_size { PKEY_SIZE_AES_128 = (__u32) 128, PKEY_SIZE_AES_192 = (__u32) 192, PKEY_SIZE_AES_256 = (__u32) 256, PKEY_SIZE_UNKNOWN = (__u32) 0xFFFFFFFF, }; /* some of the newer ioctls use these flags */ #define PKEY_FLAGS_MATCH_CUR_MKVP 0x00000002 #define PKEY_FLAGS_MATCH_ALT_MKVP 0x00000004 /* keygenflags defines for CCA AES cipher keys */ #define PKEY_KEYGEN_XPRT_SYM 0x00008000 #define PKEY_KEYGEN_XPRT_UASY 0x00004000 #define PKEY_KEYGEN_XPRT_AASY 0x00002000 #define PKEY_KEYGEN_XPRT_RAW 0x00001000 #define PKEY_KEYGEN_XPRT_CPAC 0x00000800 #define PKEY_KEYGEN_XPRT_DES 0x00000080 #define PKEY_KEYGEN_XPRT_AES 0x00000040 #define PKEY_KEYGEN_XPRT_RSA 0x00000008 /* Struct to hold apqn target info (card/domain pair) */ struct pkey_apqn { __u16 card; __u16 domain; }; /* Struct to hold a CCA AES secure key blob */ struct pkey_seckey { __u8 seckey[SECKEYBLOBSIZE]; /* the secure key blob */ }; /* Struct to hold protected key and length info */ struct pkey_protkey { __u32 type; /* key type, one of the PKEY_KEYTYPE_AES values */ __u32 len; /* bytes actually stored in protkey[] */ __u8 protkey[MAXPROTKEYSIZE]; /* the protected key blob */ }; /* Struct to hold an AES clear key value */ struct pkey_clrkey { __u8 clrkey[MAXCLRKEYSIZE]; /* 16, 24, or 32 byte clear key value */ }; /* * EP11 key blobs of type PKEY_TYPE_EP11_AES and PKEY_TYPE_EP11_ECC * are ep11 blobs prepended by this header: */ struct ep11kblob_header { __u8 type; /* always 0x00 */ __u8 hver; /* header version, currently needs to be 0x00 */ __u16 len; /* total length in bytes (including this header) */ __u8 version; /* PKEY_TYPE_EP11_AES or PKEY_TYPE_EP11_ECC */ __u8 res0; /* unused */ __u16 bitlen; /* clear key bit len, 0 for unknown */ __u8 res1[8]; /* unused */ } __packed; /* * Generate CCA AES secure key. */ struct pkey_genseck { __u16 cardnr; /* in: card to use or FFFF for any */ __u16 domain; /* in: domain or FFFF for any */ __u32 keytype; /* in: key type to generate */ struct pkey_seckey seckey; /* out: the secure key blob */ }; #define PKEY_GENSECK _IOWR(PKEY_IOCTL_MAGIC, 0x01, struct pkey_genseck) /* * Construct CCA AES secure key from clear key value */ struct pkey_clr2seck { __u16 cardnr; /* in: card to use or FFFF for any */ __u16 domain; /* in: domain or FFFF for any */ __u32 keytype; /* in: key type to generate */ struct pkey_clrkey clrkey; /* in: the clear key value */ struct pkey_seckey seckey; /* out: the secure key blob */ }; #define PKEY_CLR2SECK _IOWR(PKEY_IOCTL_MAGIC, 0x02, struct pkey_clr2seck) /* * Fabricate AES protected key from a CCA AES secure key */ struct pkey_sec2protk { __u16 cardnr; /* in: card to use or FFFF for any */ __u16 domain; /* in: domain or FFFF for any */ struct pkey_seckey seckey; /* in: the secure key blob */ struct pkey_protkey protkey; /* out: the protected key */ }; #define PKEY_SEC2PROTK _IOWR(PKEY_IOCTL_MAGIC, 0x03, struct pkey_sec2protk) /* * Fabricate AES protected key from clear key value */ struct pkey_clr2protk { __u32 keytype; /* in: key type to generate */ struct pkey_clrkey clrkey; /* in: the clear key value */ struct pkey_protkey protkey; /* out: the protected key */ }; #define PKEY_CLR2PROTK _IOWR(PKEY_IOCTL_MAGIC, 0x04, struct pkey_clr2protk) /* * Search for matching crypto card based on the Master Key * Verification Pattern provided inside a CCA AES secure key. */ struct pkey_findcard { struct pkey_seckey seckey; /* in: the secure key blob */ __u16 cardnr; /* out: card number */ __u16 domain; /* out: domain number */ }; #define PKEY_FINDCARD _IOWR(PKEY_IOCTL_MAGIC, 0x05, struct pkey_findcard) /* * Combined together: findcard + sec2prot */ struct pkey_skey2pkey { struct pkey_seckey seckey; /* in: the secure key blob */ struct pkey_protkey protkey; /* out: the protected key */ }; #define PKEY_SKEY2PKEY _IOWR(PKEY_IOCTL_MAGIC, 0x06, struct pkey_skey2pkey) /* * Verify the given CCA AES secure key for being able to be useable with * the pkey module. Check for correct key type and check for having at * least one crypto card being able to handle this key (master key * or old master key verification pattern matches). * Return some info about the key: keysize in bits, keytype (currently * only AES), flag if key is wrapped with an old MKVP. */ struct pkey_verifykey { struct pkey_seckey seckey; /* in: the secure key blob */ __u16 cardnr; /* out: card number */ __u16 domain; /* out: domain number */ __u16 keysize; /* out: key size in bits */ __u32 attributes; /* out: attribute bits */ }; #define PKEY_VERIFYKEY _IOWR(PKEY_IOCTL_MAGIC, 0x07, struct pkey_verifykey) #define PKEY_VERIFY_ATTR_AES 0x00000001 /* key is an AES key */ #define PKEY_VERIFY_ATTR_OLD_MKVP 0x00000100 /* key has old MKVP value */ /* * Generate AES random protected key. */ struct pkey_genprotk { __u32 keytype; /* in: key type to generate */ struct pkey_protkey protkey; /* out: the protected key */ }; #define PKEY_GENPROTK _IOWR(PKEY_IOCTL_MAGIC, 0x08, struct pkey_genprotk) /* * Verify an AES protected key. */ struct pkey_verifyprotk { struct pkey_protkey protkey; /* in: the protected key to verify */ }; #define PKEY_VERIFYPROTK _IOW(PKEY_IOCTL_MAGIC, 0x09, struct pkey_verifyprotk) /* * Transform an key blob (of any type) into a protected key */ struct pkey_kblob2pkey { __u8 __user *key; /* in: the key blob */ __u32 keylen; /* in: the key blob length */ struct pkey_protkey protkey; /* out: the protected key */ }; #define PKEY_KBLOB2PROTK _IOWR(PKEY_IOCTL_MAGIC, 0x0A, struct pkey_kblob2pkey) /* * Generate secure key, version 2. * Generate CCA AES secure key, CCA AES cipher key or EP11 AES secure key. * There needs to be a list of apqns given with at least one entry in there. * All apqns in the list need to be exact apqns, 0xFFFF as ANY card or domain * is not supported. The implementation walks through the list of apqns and * tries to send the request to each apqn without any further checking (like * card type or online state). If the apqn fails, simple the next one in the * list is tried until success (return 0) or the end of the list is reached * (return -1 with errno ENODEV). You may use the PKEY_APQNS4KT ioctl to * generate a list of apqns based on the key type to generate. * The keygenflags argument is passed to the low level generation functions * individual for the key type and has a key type specific meaning. When * generating CCA cipher keys you can use one or more of the PKEY_KEYGEN_* * flags to widen the export possibilities. By default a cipher key is * only exportable for CPACF (PKEY_KEYGEN_XPRT_CPAC). * The keygenflag argument for generating an EP11 AES key should either be 0 * to use the defaults which are XCP_BLOB_ENCRYPT, XCP_BLOB_DECRYPT and * XCP_BLOB_PROTKEY_EXTRACTABLE or a valid combination of XCP_BLOB_* flags. */ struct pkey_genseck2 { struct pkey_apqn __user *apqns; /* in: ptr to list of apqn targets*/ __u32 apqn_entries; /* in: # of apqn target list entries */ enum pkey_key_type type; /* in: key type to generate */ enum pkey_key_size size; /* in: key size to generate */ __u32 keygenflags; /* in: key generation flags */ __u8 __user *key; /* in: pointer to key blob buffer */ __u32 keylen; /* in: available key blob buffer size */ /* out: actual key blob size */ }; #define PKEY_GENSECK2 _IOWR(PKEY_IOCTL_MAGIC, 0x11, struct pkey_genseck2) /* * Generate secure key from clear key value, version 2. * Construct an CCA AES secure key, CCA AES cipher key or EP11 AES secure * key from a given clear key value. * There needs to be a list of apqns given with at least one entry in there. * All apqns in the list need to be exact apqns, 0xFFFF as ANY card or domain * is not supported. The implementation walks through the list of apqns and * tries to send the request to each apqn without any further checking (like * card type or online state). If the apqn fails, simple the next one in the * list is tried until success (return 0) or the end of the list is reached * (return -1 with errno ENODEV). You may use the PKEY_APQNS4KT ioctl to * generate a list of apqns based on the key type to generate. * The keygenflags argument is passed to the low level generation functions * individual for the key type and has a key type specific meaning. When * generating CCA cipher keys you can use one or more of the PKEY_KEYGEN_* * flags to widen the export possibilities. By default a cipher key is * only exportable for CPACF (PKEY_KEYGEN_XPRT_CPAC). * The keygenflag argument for generating an EP11 AES key should either be 0 * to use the defaults which are XCP_BLOB_ENCRYPT, XCP_BLOB_DECRYPT and * XCP_BLOB_PROTKEY_EXTRACTABLE or a valid combination of XCP_BLOB_* flags. */ struct pkey_clr2seck2 { struct pkey_apqn __user *apqns; /* in: ptr to list of apqn targets */ __u32 apqn_entries; /* in: # of apqn target list entries */ enum pkey_key_type type; /* in: key type to generate */ enum pkey_key_size size; /* in: key size to generate */ __u32 keygenflags; /* in: key generation flags */ struct pkey_clrkey clrkey; /* in: the clear key value */ __u8 __user *key; /* in: pointer to key blob buffer */ __u32 keylen; /* in: available key blob buffer size */ /* out: actual key blob size */ }; #define PKEY_CLR2SECK2 _IOWR(PKEY_IOCTL_MAGIC, 0x12, struct pkey_clr2seck2) /* * Verify the given secure key, version 2. * Check for correct key type. If cardnr and domain are given (are not * 0xFFFF) also check if this apqn is able to handle this type of key. * If cardnr and/or domain is 0xFFFF, on return these values are filled * with one apqn able to handle this key. * The function also checks for the master key verification patterns * of the key matching to the current or alternate mkvp of the apqn. * For CCA AES secure keys and CCA AES cipher keys this means to check * the key's mkvp against the current or old mkvp of the apqns. The flags * field is updated with some additional info about the apqn mkvp * match: If the current mkvp matches to the key's mkvp then the * PKEY_FLAGS_MATCH_CUR_MKVP bit is set, if the alternate mkvp matches to * the key's mkvp the PKEY_FLAGS_MATCH_ALT_MKVP is set. For CCA keys the * alternate mkvp is the old master key verification pattern. * CCA AES secure keys are also checked to have the CPACF export allowed * bit enabled (XPRTCPAC) in the kmf1 field. * EP11 keys are also supported and the wkvp of the key is checked against * the current wkvp of the apqns. There is no alternate for this type of * key and so on a match the flag PKEY_FLAGS_MATCH_CUR_MKVP always is set. * EP11 keys are also checked to have XCP_BLOB_PROTKEY_EXTRACTABLE set. * The ioctl returns 0 as long as the given or found apqn matches to * matches with the current or alternate mkvp to the key's mkvp. If the given * apqn does not match or there is no such apqn found, -1 with errno * ENODEV is returned. */ struct pkey_verifykey2 { __u8 __user *key; /* in: pointer to key blob */ __u32 keylen; /* in: key blob size */ __u16 cardnr; /* in/out: card number */ __u16 domain; /* in/out: domain number */ enum pkey_key_type type; /* out: the key type */ enum pkey_key_size size; /* out: the key size */ __u32 flags; /* out: additional key info flags */ }; #define PKEY_VERIFYKEY2 _IOWR(PKEY_IOCTL_MAGIC, 0x17, struct pkey_verifykey2) /* * Transform a key blob into a protected key, version 2. * There needs to be a list of apqns given with at least one entry in there. * All apqns in the list need to be exact apqns, 0xFFFF as ANY card or domain * is not supported. The implementation walks through the list of apqns and * tries to send the request to each apqn without any further checking (like * card type or online state). If the apqn fails, simple the next one in the * list is tried until success (return 0) or the end of the list is reached * (return -1 with errno ENODEV). You may use the PKEY_APQNS4K ioctl to * generate a list of apqns based on the key. * Deriving ECC protected keys from ECC secure keys is not supported with * this ioctl, use PKEY_KBLOB2PROTK3 for this purpose. */ struct pkey_kblob2pkey2 { __u8 __user *key; /* in: pointer to key blob */ __u32 keylen; /* in: key blob size */ struct pkey_apqn __user *apqns; /* in: ptr to list of apqn targets */ __u32 apqn_entries; /* in: # of apqn target list entries */ struct pkey_protkey protkey; /* out: the protected key */ }; #define PKEY_KBLOB2PROTK2 _IOWR(PKEY_IOCTL_MAGIC, 0x1A, struct pkey_kblob2pkey2) /* * Build a list of APQNs based on a key blob given. * Is able to find out which type of secure key is given (CCA AES secure * key, CCA AES cipher key, CCA ECC private key, EP11 AES key, EP11 ECC private * key) and tries to find all matching crypto cards based on the MKVP and maybe * other criterias (like CCA AES cipher keys need a CEX5C or higher, EP11 keys * with BLOB_PKEY_EXTRACTABLE need a CEX7 and EP11 api version 4). The list of * APQNs is further filtered by the key's mkvp which needs to match to either * the current mkvp (CCA and EP11) or the alternate mkvp (old mkvp, CCA adapters * only) of the apqns. The flags argument may be used to limit the matching * apqns. If the PKEY_FLAGS_MATCH_CUR_MKVP is given, only the current mkvp of * each apqn is compared. Likewise with the PKEY_FLAGS_MATCH_ALT_MKVP. If both * are given, it is assumed to return apqns where either the current or the * alternate mkvp matches. At least one of the matching flags needs to be given. * The flags argument for EP11 keys has no further action and is currently * ignored (but needs to be given as PKEY_FLAGS_MATCH_CUR_MKVP) as there is only * the wkvp from the key to match against the apqn's wkvp. * The list of matching apqns is stored into the space given by the apqns * argument and the number of stored entries goes into apqn_entries. If the list * is empty (apqn_entries is 0) the apqn_entries field is updated to the number * of apqn targets found and the ioctl returns with 0. If apqn_entries is > 0 * but the number of apqn targets does not fit into the list, the apqn_targets * field is updatedd with the number of reqired entries but there are no apqn * values stored in the list and the ioctl returns with ENOSPC. If no matching * APQN is found, the ioctl returns with 0 but the apqn_entries value is 0. */ struct pkey_apqns4key { __u8 __user *key; /* in: pointer to key blob */ __u32 keylen; /* in: key blob size */ __u32 flags; /* in: match controlling flags */ struct pkey_apqn __user *apqns; /* in/out: ptr to list of apqn targets*/ __u32 apqn_entries; /* in: max # of apqn entries in the list */ /* out: # apqns stored into the list */ }; #define PKEY_APQNS4K _IOWR(PKEY_IOCTL_MAGIC, 0x1B, struct pkey_apqns4key) /* * Build a list of APQNs based on a key type given. * Build a list of APQNs based on a given key type and maybe further * restrict the list by given master key verification patterns. * For different key types there may be different ways to match the * master key verification patterns. For CCA keys (CCA data key and CCA * cipher key) the first 8 bytes of cur_mkvp refer to the current AES mkvp value * of the apqn and the first 8 bytes of the alt_mkvp refer to the old AES mkvp. * For CCA ECC keys it is similar but the match is against the APKA current/old * mkvp. The flags argument controls if the apqns current and/or alternate mkvp * should match. If the PKEY_FLAGS_MATCH_CUR_MKVP is given, only the current * mkvp of each apqn is compared. Likewise with the PKEY_FLAGS_MATCH_ALT_MKVP. * If both are given, it is assumed to return apqns where either the * current or the alternate mkvp matches. If no match flag is given * (flags is 0) the mkvp values are ignored for the match process. * For EP11 keys there is only the current wkvp. So if the apqns should also * match to a given wkvp, then the PKEY_FLAGS_MATCH_CUR_MKVP flag should be * set. The wkvp value is 32 bytes but only the leftmost 16 bytes are compared * against the leftmost 16 byte of the wkvp of the apqn. * The list of matching apqns is stored into the space given by the apqns * argument and the number of stored entries goes into apqn_entries. If the list * is empty (apqn_entries is 0) the apqn_entries field is updated to the number * of apqn targets found and the ioctl returns with 0. If apqn_entries is > 0 * but the number of apqn targets does not fit into the list, the apqn_targets * field is updatedd with the number of reqired entries but there are no apqn * values stored in the list and the ioctl returns with ENOSPC. If no matching * APQN is found, the ioctl returns with 0 but the apqn_entries value is 0. */ struct pkey_apqns4keytype { enum pkey_key_type type; /* in: key type */ __u8 cur_mkvp[32]; /* in: current mkvp */ __u8 alt_mkvp[32]; /* in: alternate mkvp */ __u32 flags; /* in: match controlling flags */ struct pkey_apqn __user *apqns; /* in/out: ptr to list of apqn targets*/ __u32 apqn_entries; /* in: max # of apqn entries in the list */ /* out: # apqns stored into the list */ }; #define PKEY_APQNS4KT _IOWR(PKEY_IOCTL_MAGIC, 0x1C, struct pkey_apqns4keytype) /* * Transform a key blob into a protected key, version 3. * The difference to version 2 of this ioctl is that the protected key * buffer is now explicitly and not within a struct pkey_protkey any more. * So this ioctl is also able to handle EP11 and CCA ECC secure keys and * provide ECC protected keys. * There needs to be a list of apqns given with at least one entry in there. * All apqns in the list need to be exact apqns, 0xFFFF as ANY card or domain * is not supported. The implementation walks through the list of apqns and * tries to send the request to each apqn without any further checking (like * card type or online state). If the apqn fails, simple the next one in the * list is tried until success (return 0) or the end of the list is reached * (return -1 with errno ENODEV). You may use the PKEY_APQNS4K ioctl to * generate a list of apqns based on the key. */ struct pkey_kblob2pkey3 { __u8 __user *key; /* in: pointer to key blob */ __u32 keylen; /* in: key blob size */ struct pkey_apqn __user *apqns; /* in: ptr to list of apqn targets */ __u32 apqn_entries; /* in: # of apqn target list entries */ __u32 pkeytype; /* out: prot key type (enum pkey_key_type) */ __u32 pkeylen; /* in/out: size of pkey buffer/actual len of pkey */ __u8 __user *pkey; /* in: pkey blob buffer space ptr */ }; #define PKEY_KBLOB2PROTK3 _IOWR(PKEY_IOCTL_MAGIC, 0x1D, struct pkey_kblob2pkey3) #endif /* _UAPI_PKEY_H */ PK ! ���G� � sthyi.hnu �[��� /* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */ #ifndef _UAPI_ASM_STHYI_H #define _UAPI_ASM_STHYI_H #define STHYI_FC_CP_IFL_CAP 0 #endif /* _UAPI_ASM_STHYI_H */ PK ! |���% % clp.hnu �[��� /* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */ /* * ioctl interface for /dev/clp * * Copyright IBM Corp. 2016 * Author(s): Martin Schwidefsky <schwidefsky@de.ibm.com> */ #ifndef _ASM_CLP_H #define _ASM_CLP_H #include <linux/types.h> #include <linux/ioctl.h> struct clp_req { unsigned int c : 1; unsigned int r : 1; unsigned int lps : 6; unsigned int cmd : 8; unsigned int : 16; unsigned int reserved; __u64 data_p; }; #define CLP_IOCTL_MAGIC 'c' #define CLP_SYNC _IOWR(CLP_IOCTL_MAGIC, 0xC1, struct clp_req) #endif PK ! p��˼ � virtio-ccw.hnu �[��� /* SPDX-License-Identifier: ((GPL-2.0 WITH Linux-syscall-note) OR BSD-3-Clause) */ /* * Definitions for virtio-ccw devices. * * Copyright IBM Corp. 2013 * * Author(s): Cornelia Huck <cornelia.huck@de.ibm.com> */ #ifndef __KVM_VIRTIO_CCW_H #define __KVM_VIRTIO_CCW_H /* Alignment of vring buffers. */ #define KVM_VIRTIO_CCW_RING_ALIGN 4096 /* Subcode for diagnose 500 (virtio hypercall). */ #define KVM_S390_VIRTIO_CCW_NOTIFY 3 #endif PK ! ^��� � ipl.hnu �[��� /* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */ #ifndef _ASM_S390_UAPI_IPL_H #define _ASM_S390_UAPI_IPL_H #include <linux/types.h> /* IPL Parameter List header */ struct ipl_pl_hdr { __u32 len; __u8 flags; __u8 reserved1[2]; __u8 version; } __packed; #define IPL_PL_FLAG_IPLPS 0x80 #define IPL_PL_FLAG_SIPL 0x40 #define IPL_PL_FLAG_IPLSR 0x20 /* IPL Parameter Block header */ struct ipl_pb_hdr { __u32 len; __u8 pbt; } __packed; /* IPL Parameter Block types */ enum ipl_pbt { IPL_PBT_FCP = 0, IPL_PBT_SCP_DATA = 1, IPL_PBT_CCW = 2, IPL_PBT_NVME = 4, }; /* IPL Parameter Block 0 with common fields */ struct ipl_pb0_common { __u32 len; __u8 pbt; __u8 flags; __u8 reserved1[2]; __u8 loadparm[8]; __u8 reserved2[84]; } __packed; #define IPL_PB0_FLAG_LOADPARM 0x80 /* IPL Parameter Block 0 for FCP */ struct ipl_pb0_fcp { __u32 len; __u8 pbt; __u8 reserved1[3]; __u8 loadparm[8]; __u8 reserved2[304]; __u8 opt; __u8 reserved3[3]; __u8 cssid; __u8 reserved4[1]; __u16 devno; __u8 reserved5[4]; __u64 wwpn; __u64 lun; __u32 bootprog; __u8 reserved6[12]; __u64 br_lba; __u32 scp_data_len; __u8 reserved7[260]; __u8 scp_data[]; } __packed; #define IPL_PB0_FCP_OPT_IPL 0x10 #define IPL_PB0_FCP_OPT_DUMP 0x20 /* IPL Parameter Block 0 for NVMe */ struct ipl_pb0_nvme { __u32 len; __u8 pbt; __u8 reserved1[3]; __u8 loadparm[8]; __u8 reserved2[304]; __u8 opt; __u8 reserved3[3]; __u32 fid; __u8 reserved4[12]; __u32 nsid; __u8 reserved5[4]; __u32 bootprog; __u8 reserved6[12]; __u64 br_lba; __u32 scp_data_len; __u8 reserved7[260]; __u8 scp_data[]; } __packed; #define IPL_PB0_NVME_OPT_IPL 0x10 #define IPL_PB0_NVME_OPT_DUMP 0x20 /* IPL Parameter Block 0 for CCW */ struct ipl_pb0_ccw { __u32 len; __u8 pbt; __u8 flags; __u8 reserved1[2]; __u8 loadparm[8]; __u8 reserved2[84]; __u16 reserved3 : 13; __u8 ssid : 3; __u16 devno; __u8 vm_flags; __u8 reserved4[3]; __u32 vm_parm_len; __u8 nss_name[8]; __u8 vm_parm[64]; __u8 reserved5[8]; } __packed; #define IPL_PB0_CCW_VM_FLAG_NSS 0x80 #define IPL_PB0_CCW_VM_FLAG_VP 0x40 /* IPL Parameter Block 1 for additional SCP data */ struct ipl_pb1_scp_data { __u32 len; __u8 pbt; __u8 scp_data[]; } __packed; /* IPL Report List header */ struct ipl_rl_hdr { __u32 len; __u8 flags; __u8 reserved1[2]; __u8 version; __u8 reserved2[8]; } __packed; /* IPL Report Block header */ struct ipl_rb_hdr { __u32 len; __u8 rbt; __u8 reserved1[11]; } __packed; /* IPL Report Block types */ enum ipl_rbt { IPL_RBT_CERTIFICATES = 1, IPL_RBT_COMPONENTS = 2, }; /* IPL Report Block for the certificate list */ struct ipl_rb_certificate_entry { __u64 addr; __u64 len; } __packed; struct ipl_rb_certificates { __u32 len; __u8 rbt; __u8 reserved1[11]; struct ipl_rb_certificate_entry entries[]; } __packed; /* IPL Report Block for the component list */ struct ipl_rb_component_entry { __u64 addr; __u64 len; __u8 flags; __u8 reserved1[5]; __u16 certificate_index; __u8 reserved2[8]; }; #define IPL_RB_COMPONENT_FLAG_SIGNED 0x80 #define IPL_RB_COMPONENT_FLAG_VERIFIED 0x40 struct ipl_rb_components { __u32 len; __u8 rbt; __u8 reserved1[11]; struct ipl_rb_component_entry entries[]; } __packed; #endif PK ! ~�� � monwriter.hnu �[��� /* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */ /* * Copyright IBM Corp. 2006 * Character device driver for writing z/VM APPLDATA monitor records * Version 1.0 * Author(s): Melissa Howland <melissah@us.ibm.com> * */ #ifndef _ASM_390_MONWRITER_H #define _ASM_390_MONWRITER_H /* mon_function values */ #define MONWRITE_START_INTERVAL 0x00 /* start interval recording */ #define MONWRITE_STOP_INTERVAL 0x01 /* stop interval or config recording */ #define MONWRITE_GEN_EVENT 0x02 /* generate event record */ #define MONWRITE_START_CONFIG 0x03 /* start configuration recording */ /* the header the app uses in its write() data */ struct monwrite_hdr { unsigned char mon_function; unsigned short applid; unsigned char record_num; unsigned short version; unsigned short release; unsigned short mod_level; unsigned short datalen; unsigned char hdrlen; } __attribute__((packed)); #endif /* _ASM_390_MONWRITER_H */ PK ! �9�� � kvm_perf.hnu �[��� /* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */ /* * Definitions for perf-kvm on s390 * * Copyright 2014 IBM Corp. * Author(s): Alexander Yarygin <yarygin@linux.vnet.ibm.com> */ #ifndef __LINUX_KVM_PERF_S390_H #define __LINUX_KVM_PERF_S390_H #include <asm/sie.h> #define DECODE_STR_LEN 40 #define VCPU_ID "id" #define KVM_ENTRY_TRACE "kvm:kvm_s390_sie_enter" #define KVM_EXIT_TRACE "kvm:kvm_s390_sie_exit" #define KVM_EXIT_REASON "icptcode" #endif PK ! ���dW W chsc.hnu �[��� /* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */ /* * ioctl interface for /dev/chsc * * Copyright IBM Corp. 2008, 2012 * Author(s): Cornelia Huck <cornelia.huck@de.ibm.com> */ #ifndef _ASM_CHSC_H #define _ASM_CHSC_H #include <linux/types.h> #include <linux/ioctl.h> #include <asm/chpid.h> #include <asm/schid.h> #define CHSC_SIZE 0x1000 struct chsc_async_header { __u16 length; __u16 code; __u32 cmd_dependend; __u32 key : 4; __u32 : 28; struct subchannel_id sid; }; struct chsc_async_area { struct chsc_async_header header; __u8 data[CHSC_SIZE - sizeof(struct chsc_async_header)]; }; struct chsc_header { __u16 length; __u16 code; }; struct chsc_sync_area { struct chsc_header header; __u8 data[CHSC_SIZE - sizeof(struct chsc_header)]; }; struct chsc_response_struct { __u16 length; __u16 code; __u32 parms; __u8 data[CHSC_SIZE - 2 * sizeof(__u16) - sizeof(__u32)]; }; struct chsc_chp_cd { struct chp_id chpid; int m; int fmt; struct chsc_response_struct cpcb; }; struct chsc_cu_cd { __u16 cun; __u8 cssid; int m; int fmt; struct chsc_response_struct cucb; }; struct chsc_sch_cud { struct subchannel_id schid; int fmt; struct chsc_response_struct scub; }; struct conf_id { int m; __u8 cssid; __u8 ssid; }; struct chsc_conf_info { struct conf_id id; int fmt; struct chsc_response_struct scid; }; struct ccl_parm_chpid { int m; struct chp_id chp; }; struct ccl_parm_cssids { __u8 f_cssid; __u8 l_cssid; }; struct chsc_comp_list { struct { enum { CCL_CU_ON_CHP = 1, CCL_CHP_TYPE_CAP = 2, CCL_CSS_IMG = 4, CCL_CSS_IMG_CONF_CHAR = 5, CCL_IOP_CHP = 6, } ctype; int fmt; struct ccl_parm_chpid chpid; struct ccl_parm_cssids cssids; } req; struct chsc_response_struct sccl; }; struct chsc_dcal { struct { enum { DCAL_CSS_IID_PN = 4, } atype; __u32 list_parm[2]; int fmt; } req; struct chsc_response_struct sdcal; }; struct chsc_cpd_info { struct chp_id chpid; int m; int fmt; int rfmt; int c; struct chsc_response_struct chpdb; }; #define CHSC_IOCTL_MAGIC 'c' #define CHSC_START _IOWR(CHSC_IOCTL_MAGIC, 0x81, struct chsc_async_area) #define CHSC_INFO_CHANNEL_PATH _IOWR(CHSC_IOCTL_MAGIC, 0x82, \ struct chsc_chp_cd) #define CHSC_INFO_CU _IOWR(CHSC_IOCTL_MAGIC, 0x83, struct chsc_cu_cd) #define CHSC_INFO_SCH_CU _IOWR(CHSC_IOCTL_MAGIC, 0x84, struct chsc_sch_cud) #define CHSC_INFO_CI _IOWR(CHSC_IOCTL_MAGIC, 0x85, struct chsc_conf_info) #define CHSC_INFO_CCL _IOWR(CHSC_IOCTL_MAGIC, 0x86, struct chsc_comp_list) #define CHSC_INFO_CPD _IOWR(CHSC_IOCTL_MAGIC, 0x87, struct chsc_cpd_info) #define CHSC_INFO_DCAL _IOWR(CHSC_IOCTL_MAGIC, 0x88, struct chsc_dcal) #define CHSC_START_SYNC _IOWR(CHSC_IOCTL_MAGIC, 0x89, struct chsc_sync_area) #define CHSC_ON_CLOSE_SET _IOWR(CHSC_IOCTL_MAGIC, 0x8a, struct chsc_async_area) #define CHSC_ON_CLOSE_REMOVE _IO(CHSC_IOCTL_MAGIC, 0x8b) #endif PK ! ��٢, �, zcrypt.hnu �[��� /* SPDX-License-Identifier: GPL-2.0+ WITH Linux-syscall-note */ /* * include/asm-s390/zcrypt.h * * zcrypt 2.2.1 (user-visible header) * * Copyright IBM Corp. 2001, 2019 * Author(s): Robert Burroughs * Eric Rossman (edrossma@us.ibm.com) * * Hotplug & misc device support: Jochen Roehrig (roehrig@de.ibm.com) */ #ifndef __ASM_S390_ZCRYPT_H #define __ASM_S390_ZCRYPT_H #define ZCRYPT_VERSION 2 #define ZCRYPT_RELEASE 2 #define ZCRYPT_VARIANT 1 #include <linux/ioctl.h> #include <linux/compiler.h> #include <linux/types.h> /* Name of the zcrypt device driver. */ #define ZCRYPT_NAME "zcrypt" /** * struct ica_rsa_modexpo * * Requirements: * - outputdatalength is at least as large as inputdatalength. * - All key parts are right justified in their fields, padded on * the left with zeroes. * - length(b_key) = inputdatalength * - length(n_modulus) = inputdatalength */ struct ica_rsa_modexpo { __u8 __user *inputdata; __u32 inputdatalength; __u8 __user *outputdata; __u32 outputdatalength; __u8 __user *b_key; __u8 __user *n_modulus; }; /** * struct ica_rsa_modexpo_crt * * Requirements: * - inputdatalength is even. * - outputdatalength is at least as large as inputdatalength. * - All key parts are right justified in their fields, padded on * the left with zeroes. * - length(bp_key) = inputdatalength/2 + 8 * - length(bq_key) = inputdatalength/2 * - length(np_key) = inputdatalength/2 + 8 * - length(nq_key) = inputdatalength/2 * - length(u_mult_inv) = inputdatalength/2 + 8 */ struct ica_rsa_modexpo_crt { __u8 __user *inputdata; __u32 inputdatalength; __u8 __user *outputdata; __u32 outputdatalength; __u8 __user *bp_key; __u8 __user *bq_key; __u8 __user *np_prime; __u8 __user *nq_prime; __u8 __user *u_mult_inv; }; /** * CPRBX * Note that all shorts and ints are big-endian. * All pointer fields are 16 bytes long, and mean nothing. * * A request CPRB is followed by a request_parameter_block. * * The request (or reply) parameter block is organized thus: * function code * VUD block * key block */ struct CPRBX { __u16 cprb_len; /* CPRB length 220 */ __u8 cprb_ver_id; /* CPRB version id. 0x02 */ __u8 pad_000[3]; /* Alignment pad bytes */ __u8 func_id[2]; /* function id 0x5432 */ __u8 cprb_flags[4]; /* Flags */ __u32 req_parml; /* request parameter buffer len */ __u32 req_datal; /* request data buffer */ __u32 rpl_msgbl; /* reply message block length */ __u32 rpld_parml; /* replied parameter block len */ __u32 rpl_datal; /* reply data block len */ __u32 rpld_datal; /* replied data block len */ __u32 req_extbl; /* request extension block len */ __u8 pad_001[4]; /* reserved */ __u32 rpld_extbl; /* replied extension block len */ __u8 padx000[16 - sizeof(__u8 *)]; __u8 __user *req_parmb; /* request parm block 'address' */ __u8 padx001[16 - sizeof(__u8 *)]; __u8 __user *req_datab; /* request data block 'address' */ __u8 padx002[16 - sizeof(__u8 *)]; __u8 __user *rpl_parmb; /* reply parm block 'address' */ __u8 padx003[16 - sizeof(__u8 *)]; __u8 __user *rpl_datab; /* reply data block 'address' */ __u8 padx004[16 - sizeof(__u8 *)]; __u8 __user *req_extb; /* request extension block 'addr'*/ __u8 padx005[16 - sizeof(__u8 *)]; __u8 __user *rpl_extb; /* reply extension block 'address'*/ __u16 ccp_rtcode; /* server return code */ __u16 ccp_rscode; /* server reason code */ __u32 mac_data_len; /* Mac Data Length */ __u8 logon_id[8]; /* Logon Identifier */ __u8 mac_value[8]; /* Mac Value */ __u8 mac_content_flgs; /* Mac content flag byte */ __u8 pad_002; /* Alignment */ __u16 domain; /* Domain */ __u8 usage_domain[4]; /* Usage domain */ __u8 cntrl_domain[4]; /* Control domain */ __u8 S390enf_mask[4]; /* S/390 enforcement mask */ __u8 pad_004[36]; /* reserved */ } __attribute__((packed)); /** * xcRB */ struct ica_xcRB { __u16 agent_ID; __u32 user_defined; __u16 request_ID; __u32 request_control_blk_length; __u8 _padding1[16 - sizeof(__u8 *)]; __u8 __user *request_control_blk_addr; __u32 request_data_length; __u8 _padding2[16 - sizeof(__u8 *)]; __u8 __user *request_data_address; __u32 reply_control_blk_length; __u8 _padding3[16 - sizeof(__u8 *)]; __u8 __user *reply_control_blk_addr; __u32 reply_data_length; __u8 __padding4[16 - sizeof(__u8 *)]; __u8 __user *reply_data_addr; __u16 priority_window; __u32 status; } __attribute__((packed)); /** * struct ep11_cprb - EP11 connectivity programming request block * @cprb_len: CPRB header length [0x0020] * @cprb_ver_id: CPRB version id. [0x04] * @pad_000: Alignment pad bytes * @flags: Admin bit [0x80], Special bit [0x20] * @func_id: Function id / subtype [0x5434] "T4" * @source_id: Source id [originator id] * @target_id: Target id [usage/ctrl domain id] * @ret_code: Return code * @reserved1: Reserved * @reserved2: Reserved * @payload_len: Payload length */ struct ep11_cprb { __u16 cprb_len; __u8 cprb_ver_id; __u8 pad_000[2]; __u8 flags; __u8 func_id[2]; __u32 source_id; __u32 target_id; __u32 ret_code; __u32 reserved1; __u32 reserved2; __u32 payload_len; } __attribute__((packed)); /** * struct ep11_target_dev - EP11 target device list * @ap_id: AP device id * @dom_id: Usage domain id */ struct ep11_target_dev { __u16 ap_id; __u16 dom_id; }; /** * struct ep11_urb - EP11 user request block * @targets_num: Number of target adapters * @targets: Addr to target adapter list * @weight: Level of request priority * @req_no: Request id/number * @req_len: Request length * @req: Addr to request block * @resp_len: Response length * @resp: Addr to response block */ struct ep11_urb { __u16 targets_num; __u8 __user *targets; __u64 weight; __u64 req_no; __u64 req_len; __u8 __user *req; __u64 resp_len; __u8 __user *resp; } __attribute__((packed)); /** * struct zcrypt_device_status_ext * @hwtype: raw hardware type * @qid: 8 bit device index, 8 bit domain * @functions: AP device function bit field 'abcdef' * a, b, c = reserved * d = CCA coprocessor * e = Accelerator * f = EP11 coprocessor * @online online status * @reserved reserved */ struct zcrypt_device_status_ext { unsigned int hwtype:8; unsigned int qid:16; unsigned int online:1; unsigned int functions:6; unsigned int reserved:1; }; #define MAX_ZDEV_CARDIDS_EXT 256 #define MAX_ZDEV_DOMAINS_EXT 256 /* Maximum number of zcrypt devices */ #define MAX_ZDEV_ENTRIES_EXT (MAX_ZDEV_CARDIDS_EXT * MAX_ZDEV_DOMAINS_EXT) /* Device matrix of all zcrypt devices */ struct zcrypt_device_matrix_ext { struct zcrypt_device_status_ext device[MAX_ZDEV_ENTRIES_EXT]; }; #define AUTOSELECT 0xFFFFFFFF #define AUTOSEL_AP ((__u16) 0xFFFF) #define AUTOSEL_DOM ((__u16) 0xFFFF) #define ZCRYPT_IOCTL_MAGIC 'z' /** * Interface notes: * * The ioctl()s which are implemented (along with relevant details) * are: * * ICARSAMODEXPO * Perform an RSA operation using a Modulus-Exponent pair * This takes an ica_rsa_modexpo struct as its arg. * * NOTE: please refer to the comments preceding this structure * for the implementation details for the contents of the * block * * ICARSACRT * Perform an RSA operation using a Chinese-Remainder Theorem key * This takes an ica_rsa_modexpo_crt struct as its arg. * * NOTE: please refer to the comments preceding this structure * for the implementation details for the contents of the * block * * ZSECSENDCPRB * Send an arbitrary CPRB to a crypto card. * * ZSENDEP11CPRB * Send an arbitrary EP11 CPRB to an EP11 coprocessor crypto card. * * ZCRYPT_DEVICE_STATUS * The given struct zcrypt_device_matrix_ext is updated with * status information for each currently known apqn. * * ZCRYPT_STATUS_MASK * Return an MAX_ZDEV_CARDIDS_EXT element array of unsigned chars for the * status of all devices. * 0x01: PCICA * 0x02: PCICC * 0x03: PCIXCC_MCL2 * 0x04: PCIXCC_MCL3 * 0x05: CEX2C * 0x06: CEX2A * 0x07: CEX3C * 0x08: CEX3A * 0x0a: CEX4 * 0x0b: CEX5 * 0x0c: CEX6, CEX7 or CEX8 * 0x0d: device is disabled * * ZCRYPT_QDEPTH_MASK * Return an MAX_ZDEV_CARDIDS_EXT element array of unsigned chars for the * queue depth of all devices. * * ZCRYPT_PERDEV_REQCNT * Return an MAX_ZDEV_CARDIDS_EXT element array of unsigned integers for * the number of successfully completed requests per device since the * device was detected and made available. * */ /** * Supported ioctl calls */ #define ICARSAMODEXPO _IOC(_IOC_READ|_IOC_WRITE, ZCRYPT_IOCTL_MAGIC, 0x05, 0) #define ICARSACRT _IOC(_IOC_READ|_IOC_WRITE, ZCRYPT_IOCTL_MAGIC, 0x06, 0) #define ZSECSENDCPRB _IOC(_IOC_READ|_IOC_WRITE, ZCRYPT_IOCTL_MAGIC, 0x81, 0) #define ZSENDEP11CPRB _IOC(_IOC_READ|_IOC_WRITE, ZCRYPT_IOCTL_MAGIC, 0x04, 0) #define ZCRYPT_DEVICE_STATUS _IOC(_IOC_READ|_IOC_WRITE, ZCRYPT_IOCTL_MAGIC, 0x5f, 0) #define ZCRYPT_STATUS_MASK _IOR(ZCRYPT_IOCTL_MAGIC, 0x58, char[MAX_ZDEV_CARDIDS_EXT]) #define ZCRYPT_QDEPTH_MASK _IOR(ZCRYPT_IOCTL_MAGIC, 0x59, char[MAX_ZDEV_CARDIDS_EXT]) #define ZCRYPT_PERDEV_REQCNT _IOR(ZCRYPT_IOCTL_MAGIC, 0x5a, int[MAX_ZDEV_CARDIDS_EXT]) /* * Support for multiple zcrypt device nodes. */ /* Nr of minor device node numbers to allocate. */ #define ZCRYPT_MAX_MINOR_NODES 256 /* Max amount of possible ioctls */ #define MAX_ZDEV_IOCTLS (1 << _IOC_NRBITS) /* * Only deprecated defines, structs and ioctls below this line. */ /* Deprecated: use MAX_ZDEV_CARDIDS_EXT */ #define MAX_ZDEV_CARDIDS 64 /* Deprecated: use MAX_ZDEV_DOMAINS_EXT */ #define MAX_ZDEV_DOMAINS 256 /* Deprecated: use MAX_ZDEV_ENTRIES_EXT */ #define MAX_ZDEV_ENTRIES (MAX_ZDEV_CARDIDS * MAX_ZDEV_DOMAINS) /* Deprecated: use struct zcrypt_device_status_ext */ struct zcrypt_device_status { unsigned int hwtype:8; unsigned int qid:14; unsigned int online:1; unsigned int functions:6; unsigned int reserved:3; }; /* Deprecated: use struct zcrypt_device_matrix_ext */ struct zcrypt_device_matrix { struct zcrypt_device_status device[MAX_ZDEV_ENTRIES]; }; /* Deprecated: use ZCRYPT_DEVICE_STATUS */ #define ZDEVICESTATUS _IOC(_IOC_READ|_IOC_WRITE, ZCRYPT_IOCTL_MAGIC, 0x4f, 0) /* Deprecated: use ZCRYPT_STATUS_MASK */ #define Z90STAT_STATUS_MASK _IOR(ZCRYPT_IOCTL_MAGIC, 0x48, char[64]) /* Deprecated: use ZCRYPT_QDEPTH_MASK */ #define Z90STAT_QDEPTH_MASK _IOR(ZCRYPT_IOCTL_MAGIC, 0x49, char[64]) /* Deprecated: use ZCRYPT_PERDEV_REQCNT */ #define Z90STAT_PERDEV_REQCNT _IOR(ZCRYPT_IOCTL_MAGIC, 0x4a, int[64]) /* Deprecated: use sysfs to query these values */ #define Z90STAT_REQUESTQ_COUNT _IOR(ZCRYPT_IOCTL_MAGIC, 0x44, int) #define Z90STAT_PENDINGQ_COUNT _IOR(ZCRYPT_IOCTL_MAGIC, 0x45, int) #define Z90STAT_TOTALOPEN_COUNT _IOR(ZCRYPT_IOCTL_MAGIC, 0x46, int) #define Z90STAT_DOMAIN_INDEX _IOR(ZCRYPT_IOCTL_MAGIC, 0x47, int) /* * The ioctl number ranges 0x40 - 0x42 and 0x4b - 0x4e had been used in the * past, don't assign new ioctls for these. */ #endif /* __ASM_S390_ZCRYPT_H */ PK ! �~p�r1 r1 dasd.hnu �[��� /* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */ /* * Author(s)......: Holger Smolinski <Holger.Smolinski@de.ibm.com> * Bugreports.to..: <Linux390@de.ibm.com> * Copyright IBM Corp. 1999, 2000 * EMC Symmetrix ioctl Copyright EMC Corporation, 2008 * Author.........: Nigel Hislop <hislop_nigel@emc.com> * * This file is the interface of the DASD device driver, which is exported to user space * any future changes wrt the API will result in a change of the APIVERSION reported * to userspace by the DASDAPIVER-ioctl * */ #ifndef DASD_H #define DASD_H #include <linux/types.h> #include <linux/ioctl.h> #define DASD_IOCTL_LETTER 'D' #define DASD_API_VERSION 6 /* * struct dasd_information2_t * represents any data about the device, which is visible to userspace. * including foramt and featueres. */ typedef struct dasd_information2_t { unsigned int devno; /* S/390 devno */ unsigned int real_devno; /* for aliases */ unsigned int schid; /* S/390 subchannel identifier */ unsigned int cu_type : 16; /* from SenseID */ unsigned int cu_model : 8; /* from SenseID */ unsigned int dev_type : 16; /* from SenseID */ unsigned int dev_model : 8; /* from SenseID */ unsigned int open_count; unsigned int req_queue_len; unsigned int chanq_len; /* length of chanq */ char type[4]; /* from discipline.name, 'none' for unknown */ unsigned int status; /* current device level */ unsigned int label_block; /* where to find the VOLSER */ unsigned int FBA_layout; /* fixed block size (like AIXVOL) */ unsigned int characteristics_size; unsigned int confdata_size; char characteristics[64]; /* from read_device_characteristics */ char configuration_data[256]; /* from read_configuration_data */ unsigned int format; /* format info like formatted/cdl/ldl/... */ unsigned int features; /* dasd features like 'ro',... */ unsigned int reserved0; /* reserved for further use ,... */ unsigned int reserved1; /* reserved for further use ,... */ unsigned int reserved2; /* reserved for further use ,... */ unsigned int reserved3; /* reserved for further use ,... */ unsigned int reserved4; /* reserved for further use ,... */ unsigned int reserved5; /* reserved for further use ,... */ unsigned int reserved6; /* reserved for further use ,... */ unsigned int reserved7; /* reserved for further use ,... */ } dasd_information2_t; /* * values to be used for dasd_information_t.format * 0x00: NOT formatted * 0x01: Linux disc layout * 0x02: Common disc layout */ #define DASD_FORMAT_NONE 0 #define DASD_FORMAT_LDL 1 #define DASD_FORMAT_CDL 2 /* * values to be used for dasd_information_t.features * 0x100: default features * 0x001: readonly (ro) * 0x002: use diag discipline (diag) * 0x004: set the device initially online (internal use only) * 0x008: enable ERP related logging * 0x010: allow I/O to fail on lost paths * 0x020: allow I/O to fail when a lock was stolen * 0x040: give access to raw eckd data * 0x080: enable discard support * 0x100: enable autodisable for IFCC errors (default) * 0x200: enable requeue of all requests on autoquiesce */ #define DASD_FEATURE_READONLY 0x001 #define DASD_FEATURE_USEDIAG 0x002 #define DASD_FEATURE_INITIAL_ONLINE 0x004 #define DASD_FEATURE_ERPLOG 0x008 #define DASD_FEATURE_FAILFAST 0x010 #define DASD_FEATURE_FAILONSLCK 0x020 #define DASD_FEATURE_USERAW 0x040 #define DASD_FEATURE_DISCARD 0x080 #define DASD_FEATURE_PATH_AUTODISABLE 0x100 #define DASD_FEATURE_REQUEUEQUIESCE 0x200 #define DASD_FEATURE_DEFAULT DASD_FEATURE_PATH_AUTODISABLE #define DASD_PARTN_BITS 2 /* * struct dasd_information_t * represents any data about the data, which is visible to userspace */ typedef struct dasd_information_t { unsigned int devno; /* S/390 devno */ unsigned int real_devno; /* for aliases */ unsigned int schid; /* S/390 subchannel identifier */ unsigned int cu_type : 16; /* from SenseID */ unsigned int cu_model : 8; /* from SenseID */ unsigned int dev_type : 16; /* from SenseID */ unsigned int dev_model : 8; /* from SenseID */ unsigned int open_count; unsigned int req_queue_len; unsigned int chanq_len; /* length of chanq */ char type[4]; /* from discipline.name, 'none' for unknown */ unsigned int status; /* current device level */ unsigned int label_block; /* where to find the VOLSER */ unsigned int FBA_layout; /* fixed block size (like AIXVOL) */ unsigned int characteristics_size; unsigned int confdata_size; char characteristics[64]; /* from read_device_characteristics */ char configuration_data[256]; /* from read_configuration_data */ } dasd_information_t; /* * Read Subsystem Data - Performance Statistics */ typedef struct dasd_rssd_perf_stats_t { unsigned char invalid:1; unsigned char format:3; unsigned char data_format:4; unsigned char unit_address; unsigned short device_status; unsigned int nr_read_normal; unsigned int nr_read_normal_hits; unsigned int nr_write_normal; unsigned int nr_write_fast_normal_hits; unsigned int nr_read_seq; unsigned int nr_read_seq_hits; unsigned int nr_write_seq; unsigned int nr_write_fast_seq_hits; unsigned int nr_read_cache; unsigned int nr_read_cache_hits; unsigned int nr_write_cache; unsigned int nr_write_fast_cache_hits; unsigned int nr_inhibit_cache; unsigned int nr_bybass_cache; unsigned int nr_seq_dasd_to_cache; unsigned int nr_dasd_to_cache; unsigned int nr_cache_to_dasd; unsigned int nr_delayed_fast_write; unsigned int nr_normal_fast_write; unsigned int nr_seq_fast_write; unsigned int nr_cache_miss; unsigned char status2; unsigned int nr_quick_write_promotes; unsigned char reserved; unsigned short ssid; unsigned char reseved2[96]; } __attribute__((packed)) dasd_rssd_perf_stats_t; /* * struct profile_info_t * holds the profinling information */ typedef struct dasd_profile_info_t { unsigned int dasd_io_reqs; /* number of requests processed at all */ unsigned int dasd_io_sects; /* number of sectors processed at all */ unsigned int dasd_io_secs[32]; /* histogram of request's sizes */ unsigned int dasd_io_times[32]; /* histogram of requests's times */ unsigned int dasd_io_timps[32]; /* histogram of requests's times per sector */ unsigned int dasd_io_time1[32]; /* histogram of time from build to start */ unsigned int dasd_io_time2[32]; /* histogram of time from start to irq */ unsigned int dasd_io_time2ps[32]; /* histogram of time from start to irq */ unsigned int dasd_io_time3[32]; /* histogram of time from irq to end */ unsigned int dasd_io_nr_req[32]; /* histogram of # of requests in chanq */ } dasd_profile_info_t; /* * struct format_data_t * represents all data necessary to format a dasd */ typedef struct format_data_t { unsigned int start_unit; /* from track */ unsigned int stop_unit; /* to track */ unsigned int blksize; /* sectorsize */ unsigned int intensity; } format_data_t; /* * values to be used for format_data_t.intensity * 0/8: normal format * 1/9: also write record zero * 3/11: also write home address * 4/12: invalidate track */ #define DASD_FMT_INT_FMT_R0 1 /* write record zero */ #define DASD_FMT_INT_FMT_HA 2 /* write home address, also set FMT_R0 ! */ #define DASD_FMT_INT_INVAL 4 /* invalidate tracks */ #define DASD_FMT_INT_COMPAT 8 /* use OS/390 compatible disk layout */ #define DASD_FMT_INT_FMT_NOR0 16 /* remove permission to write record zero */ #define DASD_FMT_INT_ESE_FULL 32 /* release space for entire volume */ /* * struct format_check_t * represents all data necessary to evaluate the format of * different tracks of a dasd */ typedef struct format_check_t { /* Input */ struct format_data_t expect; /* Output */ unsigned int result; /* Error indication (DASD_FMT_ERR_*) */ unsigned int unit; /* Track that is in error */ unsigned int rec; /* Record that is in error */ unsigned int num_records; /* Records in the track in error */ unsigned int blksize; /* Blocksize of first record in error */ unsigned int key_length; /* Key length of first record in error */ } format_check_t; /* Values returned in format_check_t when a format error is detected: */ /* Too few records were found on a single track */ #define DASD_FMT_ERR_TOO_FEW_RECORDS 1 /* Too many records were found on a single track */ #define DASD_FMT_ERR_TOO_MANY_RECORDS 2 /* Blocksize/data-length of a record was wrong */ #define DASD_FMT_ERR_BLKSIZE 3 /* A record ID is defined by cylinder, head, and record number (CHR). */ /* On mismatch, this error is set */ #define DASD_FMT_ERR_RECORD_ID 4 /* If key-length was != 0 */ #define DASD_FMT_ERR_KEY_LENGTH 5 /* * struct attrib_data_t * represents the operation (cache) bits for the device. * Used in DE to influence caching of the DASD. */ typedef struct attrib_data_t { unsigned char operation:3; /* cache operation mode */ unsigned char reserved:5; /* cache operation mode */ __u16 nr_cyl; /* no of cyliners for read ahaed */ __u8 reserved2[29]; /* for future use */ } __attribute__ ((packed)) attrib_data_t; /* definition of operation (cache) bits within attributes of DE */ #define DASD_NORMAL_CACHE 0x0 #define DASD_BYPASS_CACHE 0x1 #define DASD_INHIBIT_LOAD 0x2 #define DASD_SEQ_ACCESS 0x3 #define DASD_SEQ_PRESTAGE 0x4 #define DASD_REC_ACCESS 0x5 /* * Perform EMC Symmetrix I/O */ typedef struct dasd_symmio_parms { unsigned char reserved[8]; /* compat with older releases */ unsigned long long psf_data; /* char * cast to u64 */ unsigned long long rssd_result; /* char * cast to u64 */ int psf_data_len; int rssd_result_len; } __attribute__ ((packed)) dasd_symmio_parms_t; /* * Data returned by Sense Path Group ID (SNID) */ struct dasd_snid_data { struct { __u8 group:2; __u8 reserve:2; __u8 mode:1; __u8 res:3; } __attribute__ ((packed)) path_state; __u8 pgid[11]; } __attribute__ ((packed)); struct dasd_snid_ioctl_data { struct dasd_snid_data data; __u8 path_mask; } __attribute__ ((packed)); /******************************************************************************** * SECTION: Definition of IOCTLs * * Here ist how the ioctl-nr should be used: * 0 - 31 DASD driver itself * 32 - 239 still open * 240 - 255 reserved for EMC *******************************************************************************/ /* Disable the volume (for Linux) */ #define BIODASDDISABLE _IO(DASD_IOCTL_LETTER,0) /* Enable the volume (for Linux) */ #define BIODASDENABLE _IO(DASD_IOCTL_LETTER,1) /* Issue a reserve/release command, rsp. */ #define BIODASDRSRV _IO(DASD_IOCTL_LETTER,2) /* reserve */ #define BIODASDRLSE _IO(DASD_IOCTL_LETTER,3) /* release */ #define BIODASDSLCK _IO(DASD_IOCTL_LETTER,4) /* steal lock */ /* reset profiling information of a device */ #define BIODASDPRRST _IO(DASD_IOCTL_LETTER,5) /* Quiesce IO on device */ #define BIODASDQUIESCE _IO(DASD_IOCTL_LETTER,6) /* Resume IO on device */ #define BIODASDRESUME _IO(DASD_IOCTL_LETTER,7) /* Abort all I/O on a device */ #define BIODASDABORTIO _IO(DASD_IOCTL_LETTER, 240) /* Allow I/O on a device */ #define BIODASDALLOWIO _IO(DASD_IOCTL_LETTER, 241) /* retrieve API version number */ #define DASDAPIVER _IOR(DASD_IOCTL_LETTER,0,int) /* Get information on a dasd device */ #define BIODASDINFO _IOR(DASD_IOCTL_LETTER,1,dasd_information_t) /* retrieve profiling information of a device */ #define BIODASDPRRD _IOR(DASD_IOCTL_LETTER,2,dasd_profile_info_t) /* Get information on a dasd device (enhanced) */ #define BIODASDINFO2 _IOR(DASD_IOCTL_LETTER,3,dasd_information2_t) /* Performance Statistics Read */ #define BIODASDPSRD _IOR(DASD_IOCTL_LETTER,4,dasd_rssd_perf_stats_t) /* Get Attributes (cache operations) */ #define BIODASDGATTR _IOR(DASD_IOCTL_LETTER,5,attrib_data_t) /* #define BIODASDFORMAT _IOW(IOCTL_LETTER,0,format_data_t) , deprecated */ #define BIODASDFMT _IOW(DASD_IOCTL_LETTER,1,format_data_t) /* Set Attributes (cache operations) */ #define BIODASDSATTR _IOW(DASD_IOCTL_LETTER,2,attrib_data_t) /* Release Allocated Space */ #define BIODASDRAS _IOW(DASD_IOCTL_LETTER, 3, format_data_t) /* Get Sense Path Group ID (SNID) data */ #define BIODASDSNID _IOWR(DASD_IOCTL_LETTER, 1, struct dasd_snid_ioctl_data) /* Check device format according to format_check_t */ #define BIODASDCHECKFMT _IOWR(DASD_IOCTL_LETTER, 2, format_check_t) #define BIODASDSYMMIO _IOWR(DASD_IOCTL_LETTER, 240, dasd_symmio_parms_t) #endif /* DASD_H */ PK ! ��w�s s vtoc.hnu �[��� /* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */ /* * This file contains volume label definitions for DASD devices. * * Copyright IBM Corp. 2005 * * Author(s): Volker Sameske <sameske@de.ibm.com> * */ #ifndef _ASM_S390_VTOC_H #define _ASM_S390_VTOC_H #include <linux/types.h> struct vtoc_ttr { __u16 tt; __u8 r; } __attribute__ ((packed)); struct vtoc_cchhb { __u16 cc; __u16 hh; __u8 b; } __attribute__ ((packed)); struct vtoc_cchh { __u16 cc; __u16 hh; } __attribute__ ((packed)); struct vtoc_labeldate { __u8 year; __u16 day; } __attribute__ ((packed)); struct vtoc_volume_label_cdl { char volkey[4]; /* volume key = volume label */ char vollbl[4]; /* volume label */ char volid[6]; /* volume identifier */ __u8 security; /* security byte */ struct vtoc_cchhb vtoc; /* VTOC address */ char res1[5]; /* reserved */ char cisize[4]; /* CI-size for FBA,... */ /* ...blanks for CKD */ char blkperci[4]; /* no of blocks per CI (FBA), blanks for CKD */ char labperci[4]; /* no of labels per CI (FBA), blanks for CKD */ char res2[4]; /* reserved */ char lvtoc[14]; /* owner code for LVTOC */ char res3[29]; /* reserved */ } __attribute__ ((packed)); struct vtoc_volume_label_ldl { char vollbl[4]; /* volume label */ char volid[6]; /* volume identifier */ char res3[69]; /* reserved */ char ldl_version; /* version number, valid for ldl format */ __u64 formatted_blocks; /* valid when ldl_version >= f2 */ } __attribute__ ((packed)); struct vtoc_extent { __u8 typeind; /* extent type indicator */ __u8 seqno; /* extent sequence number */ struct vtoc_cchh llimit; /* starting point of this extent */ struct vtoc_cchh ulimit; /* ending point of this extent */ } __attribute__ ((packed)); struct vtoc_dev_const { __u16 DS4DSCYL; /* number of logical cyls */ __u16 DS4DSTRK; /* number of tracks in a logical cylinder */ __u16 DS4DEVTK; /* device track length */ __u8 DS4DEVI; /* non-last keyed record overhead */ __u8 DS4DEVL; /* last keyed record overhead */ __u8 DS4DEVK; /* non-keyed record overhead differential */ __u8 DS4DEVFG; /* flag byte */ __u16 DS4DEVTL; /* device tolerance */ __u8 DS4DEVDT; /* number of DSCB's per track */ __u8 DS4DEVDB; /* number of directory blocks per track */ } __attribute__ ((packed)); struct vtoc_format1_label { char DS1DSNAM[44]; /* data set name */ __u8 DS1FMTID; /* format identifier */ char DS1DSSN[6]; /* data set serial number */ __u16 DS1VOLSQ; /* volume sequence number */ struct vtoc_labeldate DS1CREDT; /* creation date: ydd */ struct vtoc_labeldate DS1EXPDT; /* expiration date */ __u8 DS1NOEPV; /* number of extents on volume */ __u8 DS1NOBDB; /* no. of bytes used in last direction blk */ __u8 DS1FLAG1; /* flag 1 */ char DS1SYSCD[13]; /* system code */ struct vtoc_labeldate DS1REFD; /* date last referenced */ __u8 DS1SMSFG; /* system managed storage indicators */ __u8 DS1SCXTF; /* sec. space extension flag byte */ __u16 DS1SCXTV; /* secondary space extension value */ __u8 DS1DSRG1; /* data set organisation byte 1 */ __u8 DS1DSRG2; /* data set organisation byte 2 */ __u8 DS1RECFM; /* record format */ __u8 DS1OPTCD; /* option code */ __u16 DS1BLKL; /* block length */ __u16 DS1LRECL; /* record length */ __u8 DS1KEYL; /* key length */ __u16 DS1RKP; /* relative key position */ __u8 DS1DSIND; /* data set indicators */ __u8 DS1SCAL1; /* secondary allocation flag byte */ char DS1SCAL3[3]; /* secondary allocation quantity */ struct vtoc_ttr DS1LSTAR; /* last used track and block on track */ __u16 DS1TRBAL; /* space remaining on last used track */ __u16 res1; /* reserved */ struct vtoc_extent DS1EXT1; /* first extent description */ struct vtoc_extent DS1EXT2; /* second extent description */ struct vtoc_extent DS1EXT3; /* third extent description */ struct vtoc_cchhb DS1PTRDS; /* possible pointer to f2 or f3 DSCB */ } __attribute__ ((packed)); struct vtoc_format4_label { char DS4KEYCD[44]; /* key code for VTOC labels: 44 times 0x04 */ __u8 DS4IDFMT; /* format identifier */ struct vtoc_cchhb DS4HPCHR; /* highest address of a format 1 DSCB */ __u16 DS4DSREC; /* number of available DSCB's */ struct vtoc_cchh DS4HCCHH; /* CCHH of next available alternate track */ __u16 DS4NOATK; /* number of remaining alternate tracks */ __u8 DS4VTOCI; /* VTOC indicators */ __u8 DS4NOEXT; /* number of extents in VTOC */ __u8 DS4SMSFG; /* system managed storage indicators */ __u8 DS4DEVAC; /* number of alternate cylinders. * Subtract from first two bytes of * DS4DEVSZ to get number of usable * cylinders. can be zero. valid * only if DS4DEVAV on. */ struct vtoc_dev_const DS4DEVCT; /* device constants */ char DS4AMTIM[8]; /* VSAM time stamp */ char DS4AMCAT[3]; /* VSAM catalog indicator */ char DS4R2TIM[8]; /* VSAM volume/catalog match time stamp */ char res1[5]; /* reserved */ char DS4F6PTR[5]; /* pointer to first format 6 DSCB */ struct vtoc_extent DS4VTOCE; /* VTOC extent description */ char res2[10]; /* reserved */ __u8 DS4EFLVL; /* extended free-space management level */ struct vtoc_cchhb DS4EFPTR; /* pointer to extended free-space info */ char res3; /* reserved */ __u32 DS4DCYL; /* number of logical cyls */ char res4[2]; /* reserved */ __u8 DS4DEVF2; /* device flags */ char res5; /* reserved */ } __attribute__ ((packed)); struct vtoc_ds5ext { __u16 t; /* RTA of the first track of free extent */ __u16 fc; /* number of whole cylinders in free ext. */ __u8 ft; /* number of remaining free tracks */ } __attribute__ ((packed)); struct vtoc_format5_label { char DS5KEYID[4]; /* key identifier */ struct vtoc_ds5ext DS5AVEXT; /* first available (free-space) extent. */ struct vtoc_ds5ext DS5EXTAV[7]; /* seven available extents */ __u8 DS5FMTID; /* format identifier */ struct vtoc_ds5ext DS5MAVET[18]; /* eighteen available extents */ struct vtoc_cchhb DS5PTRDS; /* pointer to next format5 DSCB */ } __attribute__ ((packed)); struct vtoc_ds7ext { __u32 a; /* starting RTA value */ __u32 b; /* ending RTA value + 1 */ } __attribute__ ((packed)); struct vtoc_format7_label { char DS7KEYID[4]; /* key identifier */ struct vtoc_ds7ext DS7EXTNT[5]; /* space for 5 extent descriptions */ __u8 DS7FMTID; /* format identifier */ struct vtoc_ds7ext DS7ADEXT[11]; /* space for 11 extent descriptions */ char res1[2]; /* reserved */ struct vtoc_cchhb DS7PTRDS; /* pointer to next FMT7 DSCB */ } __attribute__ ((packed)); struct vtoc_cms_label { __u8 label_id[4]; /* Label identifier */ __u8 vol_id[6]; /* Volid */ __u16 version_id; /* Version identifier */ __u32 block_size; /* Disk block size */ __u32 origin_ptr; /* Disk origin pointer */ __u32 usable_count; /* Number of usable cylinders/blocks */ __u32 formatted_count; /* Maximum number of formatted cylinders/ * blocks */ __u32 block_count; /* Disk size in CMS blocks */ __u32 used_count; /* Number of CMS blocks in use */ __u32 fst_size; /* File Status Table (FST) size */ __u32 fst_count; /* Number of FSTs per CMS block */ __u8 format_date[6]; /* Disk FORMAT date */ __u8 reserved1[2]; __u32 disk_offset; /* Disk offset when reserved*/ __u32 map_block; /* Allocation Map Block with next hole */ __u32 hblk_disp; /* Displacement into HBLK data of next hole */ __u32 user_disp; /* Displacement into user part of Allocation * map */ __u8 reserved2[4]; __u8 segment_name[8]; /* Name of shared segment */ } __attribute__ ((packed)); #endif /* _ASM_S390_VTOC_H */ PK ! �q�� � hwcap.hnu �[��� /* SPDX-License-Identifier: GPL-2.0-only WITH Linux-syscall-note */ /* * Copied from arch/arm64/include/asm/hwcap.h * * Copyright (C) 2012 ARM Ltd. * Copyright (C) 2017 SiFive */ #ifndef _UAPI_ASM_RISCV_HWCAP_H #define _UAPI_ASM_RISCV_HWCAP_H /* * Linux saves the floating-point registers according to the ISA Linux is * executing on, as opposed to the ISA the user program is compiled for. This * is necessary for a handful of esoteric use cases: for example, userspace * threading libraries must be able to examine the actual machine state in * order to fully reconstruct the state of a thread. */ #define COMPAT_HWCAP_ISA_I (1 << ('I' - 'A')) #define COMPAT_HWCAP_ISA_M (1 << ('M' - 'A')) #define COMPAT_HWCAP_ISA_A (1 << ('A' - 'A')) #define COMPAT_HWCAP_ISA_F (1 << ('F' - 'A')) #define COMPAT_HWCAP_ISA_D (1 << ('D' - 'A')) #define COMPAT_HWCAP_ISA_C (1 << ('C' - 'A')) #endif /* _UAPI_ASM_RISCV_HWCAP_H */ PK ! d���2 2 reg.hnu �[��� /* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */ /* * Various register offset definitions for debuggers, core file * examiners and whatnot. * * This file is subject to the terms and conditions of the GNU General Public * License. See the file "COPYING" in the main directory of this archive * for more details. * * Copyright (C) 1995, 1999 Ralf Baechle * Copyright (C) 1995, 1999 Silicon Graphics */ #ifndef __UAPI_ASM_MIPS_REG_H #define __UAPI_ASM_MIPS_REG_H #define MIPS32_EF_R0 6 #define MIPS32_EF_R1 7 #define MIPS32_EF_R2 8 #define MIPS32_EF_R3 9 #define MIPS32_EF_R4 10 #define MIPS32_EF_R5 11 #define MIPS32_EF_R6 12 #define MIPS32_EF_R7 13 #define MIPS32_EF_R8 14 #define MIPS32_EF_R9 15 #define MIPS32_EF_R10 16 #define MIPS32_EF_R11 17 #define MIPS32_EF_R12 18 #define MIPS32_EF_R13 19 #define MIPS32_EF_R14 20 #define MIPS32_EF_R15 21 #define MIPS32_EF_R16 22 #define MIPS32_EF_R17 23 #define MIPS32_EF_R18 24 #define MIPS32_EF_R19 25 #define MIPS32_EF_R20 26 #define MIPS32_EF_R21 27 #define MIPS32_EF_R22 28 #define MIPS32_EF_R23 29 #define MIPS32_EF_R24 30 #define MIPS32_EF_R25 31 /* * k0/k1 unsaved */ #define MIPS32_EF_R26 32 #define MIPS32_EF_R27 33 #define MIPS32_EF_R28 34 #define MIPS32_EF_R29 35 #define MIPS32_EF_R30 36 #define MIPS32_EF_R31 37 /* * Saved special registers */ #define MIPS32_EF_LO 38 #define MIPS32_EF_HI 39 #define MIPS32_EF_CP0_EPC 40 #define MIPS32_EF_CP0_BADVADDR 41 #define MIPS32_EF_CP0_STATUS 42 #define MIPS32_EF_CP0_CAUSE 43 #define MIPS32_EF_UNUSED0 44 #define MIPS32_EF_SIZE 180 #define MIPS64_EF_R0 0 #define MIPS64_EF_R1 1 #define MIPS64_EF_R2 2 #define MIPS64_EF_R3 3 #define MIPS64_EF_R4 4 #define MIPS64_EF_R5 5 #define MIPS64_EF_R6 6 #define MIPS64_EF_R7 7 #define MIPS64_EF_R8 8 #define MIPS64_EF_R9 9 #define MIPS64_EF_R10 10 #define MIPS64_EF_R11 11 #define MIPS64_EF_R12 12 #define MIPS64_EF_R13 13 #define MIPS64_EF_R14 14 #define MIPS64_EF_R15 15 #define MIPS64_EF_R16 16 #define MIPS64_EF_R17 17 #define MIPS64_EF_R18 18 #define MIPS64_EF_R19 19 #define MIPS64_EF_R20 20 #define MIPS64_EF_R21 21 #define MIPS64_EF_R22 22 #define MIPS64_EF_R23 23 #define MIPS64_EF_R24 24 #define MIPS64_EF_R25 25 /* * k0/k1 unsaved */ #define MIPS64_EF_R26 26 #define MIPS64_EF_R27 27 #define MIPS64_EF_R28 28 #define MIPS64_EF_R29 29 #define MIPS64_EF_R30 30 #define MIPS64_EF_R31 31 /* * Saved special registers */ #define MIPS64_EF_LO 32 #define MIPS64_EF_HI 33 #define MIPS64_EF_CP0_EPC 34 #define MIPS64_EF_CP0_BADVADDR 35 #define MIPS64_EF_CP0_STATUS 36 #define MIPS64_EF_CP0_CAUSE 37 #define MIPS64_EF_SIZE 304 /* size in bytes */ #if _MIPS_SIM == _MIPS_SIM_ABI32 #define EF_R0 MIPS32_EF_R0 #define EF_R1 MIPS32_EF_R1 #define EF_R2 MIPS32_EF_R2 #define EF_R3 MIPS32_EF_R3 #define EF_R4 MIPS32_EF_R4 #define EF_R5 MIPS32_EF_R5 #define EF_R6 MIPS32_EF_R6 #define EF_R7 MIPS32_EF_R7 #define EF_R8 MIPS32_EF_R8 #define EF_R9 MIPS32_EF_R9 #define EF_R10 MIPS32_EF_R10 #define EF_R11 MIPS32_EF_R11 #define EF_R12 MIPS32_EF_R12 #define EF_R13 MIPS32_EF_R13 #define EF_R14 MIPS32_EF_R14 #define EF_R15 MIPS32_EF_R15 #define EF_R16 MIPS32_EF_R16 #define EF_R17 MIPS32_EF_R17 #define EF_R18 MIPS32_EF_R18 #define EF_R19 MIPS32_EF_R19 #define EF_R20 MIPS32_EF_R20 #define EF_R21 MIPS32_EF_R21 #define EF_R22 MIPS32_EF_R22 #define EF_R23 MIPS32_EF_R23 #define EF_R24 MIPS32_EF_R24 #define EF_R25 MIPS32_EF_R25 #define EF_R26 MIPS32_EF_R26 #define EF_R27 MIPS32_EF_R27 #define EF_R28 MIPS32_EF_R28 #define EF_R29 MIPS32_EF_R29 #define EF_R30 MIPS32_EF_R30 #define EF_R31 MIPS32_EF_R31 #define EF_LO MIPS32_EF_LO #define EF_HI MIPS32_EF_HI #define EF_CP0_EPC MIPS32_EF_CP0_EPC #define EF_CP0_BADVADDR MIPS32_EF_CP0_BADVADDR #define EF_CP0_STATUS MIPS32_EF_CP0_STATUS #define EF_CP0_CAUSE MIPS32_EF_CP0_CAUSE #define EF_UNUSED0 MIPS32_EF_UNUSED0 #define EF_SIZE MIPS32_EF_SIZE #elif _MIPS_SIM == _MIPS_SIM_ABI64 || _MIPS_SIM == _MIPS_SIM_NABI32 #define EF_R0 MIPS64_EF_R0 #define EF_R1 MIPS64_EF_R1 #define EF_R2 MIPS64_EF_R2 #define EF_R3 MIPS64_EF_R3 #define EF_R4 MIPS64_EF_R4 #define EF_R5 MIPS64_EF_R5 #define EF_R6 MIPS64_EF_R6 #define EF_R7 MIPS64_EF_R7 #define EF_R8 MIPS64_EF_R8 #define EF_R9 MIPS64_EF_R9 #define EF_R10 MIPS64_EF_R10 #define EF_R11 MIPS64_EF_R11 #define EF_R12 MIPS64_EF_R12 #define EF_R13 MIPS64_EF_R13 #define EF_R14 MIPS64_EF_R14 #define EF_R15 MIPS64_EF_R15 #define EF_R16 MIPS64_EF_R16 #define EF_R17 MIPS64_EF_R17 #define EF_R18 MIPS64_EF_R18 #define EF_R19 MIPS64_EF_R19 #define EF_R20 MIPS64_EF_R20 #define EF_R21 MIPS64_EF_R21 #define EF_R22 MIPS64_EF_R22 #define EF_R23 MIPS64_EF_R23 #define EF_R24 MIPS64_EF_R24 #define EF_R25 MIPS64_EF_R25 #define EF_R26 MIPS64_EF_R26 #define EF_R27 MIPS64_EF_R27 #define EF_R28 MIPS64_EF_R28 #define EF_R29 MIPS64_EF_R29 #define EF_R30 MIPS64_EF_R30 #define EF_R31 MIPS64_EF_R31 #define EF_LO MIPS64_EF_LO #define EF_HI MIPS64_EF_HI #define EF_CP0_EPC MIPS64_EF_CP0_EPC #define EF_CP0_BADVADDR MIPS64_EF_CP0_BADVADDR #define EF_CP0_STATUS MIPS64_EF_CP0_STATUS #define EF_CP0_CAUSE MIPS64_EF_CP0_CAUSE #define EF_SIZE MIPS64_EF_SIZE #endif /* _MIPS_SIM == _MIPS_SIM_ABI64 || _MIPS_SIM == _MIPS_SIM_NABI32 */ #endif /* __UAPI_ASM_MIPS_REG_H */ PK ! ���r r inst.hnu �[��� /* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */ /* * Format of an instruction in memory. * * This file is subject to the terms and conditions of the GNU General Public * License. See the file "COPYING" in the main directory of this archive * for more details. * * Copyright (C) 1996, 2000 by Ralf Baechle * Copyright (C) 2006 by Thiemo Seufer * Copyright (C) 2012 MIPS Technologies, Inc. All rights reserved. * Copyright (C) 2014 Imagination Technologies Ltd. */ #ifndef _UAPI_ASM_INST_H #define _UAPI_ASM_INST_H #include <asm/bitfield.h> /* * Major opcodes; before MIPS IV cop1x was called cop3. */ enum major_op { spec_op, bcond_op, j_op, jal_op, beq_op, bne_op, blez_op, bgtz_op, addi_op, pop10_op = addi_op, addiu_op, slti_op, sltiu_op, andi_op, ori_op, xori_op, lui_op, cop0_op, cop1_op, cop2_op, cop1x_op, beql_op, bnel_op, blezl_op, bgtzl_op, daddi_op, pop30_op = daddi_op, daddiu_op, ldl_op, ldr_op, spec2_op, jalx_op, mdmx_op, msa_op = mdmx_op, spec3_op, lb_op, lh_op, lwl_op, lw_op, lbu_op, lhu_op, lwr_op, lwu_op, sb_op, sh_op, swl_op, sw_op, sdl_op, sdr_op, swr_op, cache_op, ll_op, lwc1_op, lwc2_op, bc6_op = lwc2_op, pref_op, lld_op, ldc1_op, ldc2_op, pop66_op = ldc2_op, ld_op, sc_op, swc1_op, swc2_op, balc6_op = swc2_op, major_3b_op, scd_op, sdc1_op, sdc2_op, pop76_op = sdc2_op, sd_op }; /* * func field of spec opcode. */ enum spec_op { sll_op, movc_op, srl_op, sra_op, sllv_op, pmon_op, srlv_op, srav_op, jr_op, jalr_op, movz_op, movn_op, syscall_op, break_op, spim_op, sync_op, mfhi_op, mthi_op, mflo_op, mtlo_op, dsllv_op, spec2_unused_op, dsrlv_op, dsrav_op, mult_op, multu_op, div_op, divu_op, dmult_op, dmultu_op, ddiv_op, ddivu_op, add_op, addu_op, sub_op, subu_op, and_op, or_op, xor_op, nor_op, spec3_unused_op, spec4_unused_op, slt_op, sltu_op, dadd_op, daddu_op, dsub_op, dsubu_op, tge_op, tgeu_op, tlt_op, tltu_op, teq_op, seleqz_op, tne_op, selnez_op, dsll_op, spec5_unused_op, dsrl_op, dsra_op, dsll32_op, spec6_unused_op, dsrl32_op, dsra32_op }; /* * func field of spec2 opcode. */ enum spec2_op { madd_op, maddu_op, mul_op, spec2_3_unused_op, msub_op, msubu_op, /* more unused ops */ clz_op = 0x20, clo_op, dclz_op = 0x24, dclo_op, sdbpp_op = 0x3f }; /* * func field of spec3 opcode. */ enum spec3_op { ext_op, dextm_op, dextu_op, dext_op, ins_op, dinsm_op, dinsu_op, dins_op, yield_op = 0x09, lx_op = 0x0a, lwle_op = 0x19, lwre_op = 0x1a, cachee_op = 0x1b, sbe_op = 0x1c, she_op = 0x1d, sce_op = 0x1e, swe_op = 0x1f, bshfl_op = 0x20, swle_op = 0x21, swre_op = 0x22, prefe_op = 0x23, dbshfl_op = 0x24, cache6_op = 0x25, sc6_op = 0x26, scd6_op = 0x27, lbue_op = 0x28, lhue_op = 0x29, lbe_op = 0x2c, lhe_op = 0x2d, lle_op = 0x2e, lwe_op = 0x2f, pref6_op = 0x35, ll6_op = 0x36, lld6_op = 0x37, rdhwr_op = 0x3b }; /* * Bits 10-6 minor opcode for r6 spec mult/div encodings */ enum mult_op { mult_mult_op = 0x0, mult_mul_op = 0x2, mult_muh_op = 0x3, }; enum multu_op { multu_multu_op = 0x0, multu_mulu_op = 0x2, multu_muhu_op = 0x3, }; enum div_op { div_div_op = 0x0, div_div6_op = 0x2, div_mod_op = 0x3, }; enum divu_op { divu_divu_op = 0x0, divu_divu6_op = 0x2, divu_modu_op = 0x3, }; enum dmult_op { dmult_dmult_op = 0x0, dmult_dmul_op = 0x2, dmult_dmuh_op = 0x3, }; enum dmultu_op { dmultu_dmultu_op = 0x0, dmultu_dmulu_op = 0x2, dmultu_dmuhu_op = 0x3, }; enum ddiv_op { ddiv_ddiv_op = 0x0, ddiv_ddiv6_op = 0x2, ddiv_dmod_op = 0x3, }; enum ddivu_op { ddivu_ddivu_op = 0x0, ddivu_ddivu6_op = 0x2, ddivu_dmodu_op = 0x3, }; /* * rt field of bcond opcodes. */ enum rt_op { bltz_op, bgez_op, bltzl_op, bgezl_op, spimi_op, unused_rt_op_0x05, unused_rt_op_0x06, unused_rt_op_0x07, tgei_op, tgeiu_op, tlti_op, tltiu_op, teqi_op, unused_0x0d_rt_op, tnei_op, unused_0x0f_rt_op, bltzal_op, bgezal_op, bltzall_op, bgezall_op, rt_op_0x14, rt_op_0x15, rt_op_0x16, rt_op_0x17, rt_op_0x18, rt_op_0x19, rt_op_0x1a, rt_op_0x1b, bposge32_op, rt_op_0x1d, rt_op_0x1e, synci_op }; /* * rs field of cop opcodes. */ enum cop_op { mfc_op = 0x00, dmfc_op = 0x01, cfc_op = 0x02, mfhc0_op = 0x02, mfhc_op = 0x03, mtc_op = 0x04, dmtc_op = 0x05, ctc_op = 0x06, mthc0_op = 0x06, mthc_op = 0x07, bc_op = 0x08, bc1eqz_op = 0x09, mfmc0_op = 0x0b, bc1nez_op = 0x0d, wrpgpr_op = 0x0e, cop_op = 0x10, copm_op = 0x18 }; /* * rt field of cop.bc_op opcodes */ enum bcop_op { bcf_op, bct_op, bcfl_op, bctl_op }; /* * func field of cop0 coi opcodes. */ enum cop0_coi_func { tlbr_op = 0x01, tlbwi_op = 0x02, tlbwr_op = 0x06, tlbp_op = 0x08, rfe_op = 0x10, eret_op = 0x18, wait_op = 0x20, hypcall_op = 0x28 }; /* * func field of cop0 com opcodes. */ enum cop0_com_func { tlbr1_op = 0x01, tlbw_op = 0x02, tlbp1_op = 0x08, dctr_op = 0x09, dctw_op = 0x0a }; /* * fmt field of cop1 opcodes. */ enum cop1_fmt { s_fmt, d_fmt, e_fmt, q_fmt, w_fmt, l_fmt }; /* * func field of cop1 instructions using d, s or w format. */ enum cop1_sdw_func { fadd_op = 0x00, fsub_op = 0x01, fmul_op = 0x02, fdiv_op = 0x03, fsqrt_op = 0x04, fabs_op = 0x05, fmov_op = 0x06, fneg_op = 0x07, froundl_op = 0x08, ftruncl_op = 0x09, fceill_op = 0x0a, ffloorl_op = 0x0b, fround_op = 0x0c, ftrunc_op = 0x0d, fceil_op = 0x0e, ffloor_op = 0x0f, fsel_op = 0x10, fmovc_op = 0x11, fmovz_op = 0x12, fmovn_op = 0x13, fseleqz_op = 0x14, frecip_op = 0x15, frsqrt_op = 0x16, fselnez_op = 0x17, fmaddf_op = 0x18, fmsubf_op = 0x19, frint_op = 0x1a, fclass_op = 0x1b, fmin_op = 0x1c, fmina_op = 0x1d, fmax_op = 0x1e, fmaxa_op = 0x1f, fcvts_op = 0x20, fcvtd_op = 0x21, fcvte_op = 0x22, fcvtw_op = 0x24, fcvtl_op = 0x25, fcmp_op = 0x30 }; /* * func field of cop1x opcodes (MIPS IV). */ enum cop1x_func { lwxc1_op = 0x00, ldxc1_op = 0x01, swxc1_op = 0x08, sdxc1_op = 0x09, pfetch_op = 0x0f, madd_s_op = 0x20, madd_d_op = 0x21, madd_e_op = 0x22, msub_s_op = 0x28, msub_d_op = 0x29, msub_e_op = 0x2a, nmadd_s_op = 0x30, nmadd_d_op = 0x31, nmadd_e_op = 0x32, nmsub_s_op = 0x38, nmsub_d_op = 0x39, nmsub_e_op = 0x3a }; /* * func field for mad opcodes (MIPS IV). */ enum mad_func { madd_fp_op = 0x08, msub_fp_op = 0x0a, nmadd_fp_op = 0x0c, nmsub_fp_op = 0x0e }; /* * func field for page table walker (Loongson-3). */ enum ptw_func { lwdir_op = 0x00, lwpte_op = 0x01, lddir_op = 0x02, ldpte_op = 0x03, }; /* * func field for special3 lx opcodes (Cavium Octeon). */ enum lx_func { lwx_op = 0x00, lhx_op = 0x04, lbux_op = 0x06, ldx_op = 0x08, lwux_op = 0x10, lhux_op = 0x14, lbx_op = 0x16, }; /* * BSHFL opcodes */ enum bshfl_func { wsbh_op = 0x2, seb_op = 0x10, seh_op = 0x18, }; /* * DBSHFL opcodes */ enum dbshfl_func { dsbh_op = 0x2, dshd_op = 0x5, }; /* * MSA minor opcodes. */ enum msa_func { msa_elm_op = 0x19, }; /* * MSA ELM opcodes. */ enum msa_elm { msa_ctc_op = 0x3e, msa_cfc_op = 0x7e, }; /* * func field for MSA MI10 format. */ enum msa_mi10_func { msa_ld_op = 8, msa_st_op = 9, }; /* * MSA 2 bit format fields. */ enum msa_2b_fmt { msa_fmt_b = 0, msa_fmt_h = 1, msa_fmt_w = 2, msa_fmt_d = 3, }; /* * (microMIPS) Major opcodes. */ enum mm_major_op { mm_pool32a_op, mm_pool16a_op, mm_lbu16_op, mm_move16_op, mm_addi32_op, mm_lbu32_op, mm_sb32_op, mm_lb32_op, mm_pool32b_op, mm_pool16b_op, mm_lhu16_op, mm_andi16_op, mm_addiu32_op, mm_lhu32_op, mm_sh32_op, mm_lh32_op, mm_pool32i_op, mm_pool16c_op, mm_lwsp16_op, mm_pool16d_op, mm_ori32_op, mm_pool32f_op, mm_pool32s_op, mm_reserved2_op, mm_pool32c_op, mm_lwgp16_op, mm_lw16_op, mm_pool16e_op, mm_xori32_op, mm_jals32_op, mm_addiupc_op, mm_reserved3_op, mm_reserved4_op, mm_pool16f_op, mm_sb16_op, mm_beqz16_op, mm_slti32_op, mm_beq32_op, mm_swc132_op, mm_lwc132_op, mm_reserved5_op, mm_reserved6_op, mm_sh16_op, mm_bnez16_op, mm_sltiu32_op, mm_bne32_op, mm_sdc132_op, mm_ldc132_op, mm_reserved7_op, mm_reserved8_op, mm_swsp16_op, mm_b16_op, mm_andi32_op, mm_j32_op, mm_sd32_op, mm_ld32_op, mm_reserved11_op, mm_reserved12_op, mm_sw16_op, mm_li16_op, mm_jalx32_op, mm_jal32_op, mm_sw32_op, mm_lw32_op, }; /* * (microMIPS) POOL32I minor opcodes. */ enum mm_32i_minor_op { mm_bltz_op, mm_bltzal_op, mm_bgez_op, mm_bgezal_op, mm_blez_op, mm_bnezc_op, mm_bgtz_op, mm_beqzc_op, mm_tlti_op, mm_tgei_op, mm_tltiu_op, mm_tgeiu_op, mm_tnei_op, mm_lui_op, mm_teqi_op, mm_reserved13_op, mm_synci_op, mm_bltzals_op, mm_reserved14_op, mm_bgezals_op, mm_bc2f_op, mm_bc2t_op, mm_reserved15_op, mm_reserved16_op, mm_reserved17_op, mm_reserved18_op, mm_bposge64_op, mm_bposge32_op, mm_bc1f_op, mm_bc1t_op, mm_reserved19_op, mm_reserved20_op, mm_bc1any2f_op, mm_bc1any2t_op, mm_bc1any4f_op, mm_bc1any4t_op, }; /* * (microMIPS) POOL32A minor opcodes. */ enum mm_32a_minor_op { mm_sll32_op = 0x000, mm_ins_op = 0x00c, mm_sllv32_op = 0x010, mm_ext_op = 0x02c, mm_pool32axf_op = 0x03c, mm_srl32_op = 0x040, mm_srlv32_op = 0x050, mm_sra_op = 0x080, mm_srav_op = 0x090, mm_rotr_op = 0x0c0, mm_lwxs_op = 0x118, mm_addu32_op = 0x150, mm_subu32_op = 0x1d0, mm_wsbh_op = 0x1ec, mm_mul_op = 0x210, mm_and_op = 0x250, mm_or32_op = 0x290, mm_xor32_op = 0x310, mm_slt_op = 0x350, mm_sltu_op = 0x390, }; /* * (microMIPS) POOL32B functions. */ enum mm_32b_func { mm_lwc2_func = 0x0, mm_lwp_func = 0x1, mm_ldc2_func = 0x2, mm_ldp_func = 0x4, mm_lwm32_func = 0x5, mm_cache_func = 0x6, mm_ldm_func = 0x7, mm_swc2_func = 0x8, mm_swp_func = 0x9, mm_sdc2_func = 0xa, mm_sdp_func = 0xc, mm_swm32_func = 0xd, mm_sdm_func = 0xf, }; /* * (microMIPS) POOL32C functions. */ enum mm_32c_func { mm_pref_func = 0x2, mm_ll_func = 0x3, mm_swr_func = 0x9, mm_sc_func = 0xb, mm_lwu_func = 0xe, }; /* * (microMIPS) POOL32AXF minor opcodes. */ enum mm_32axf_minor_op { mm_mfc0_op = 0x003, mm_mtc0_op = 0x00b, mm_tlbp_op = 0x00d, mm_mfhi32_op = 0x035, mm_jalr_op = 0x03c, mm_tlbr_op = 0x04d, mm_mflo32_op = 0x075, mm_jalrhb_op = 0x07c, mm_tlbwi_op = 0x08d, mm_mthi32_op = 0x0b5, mm_tlbwr_op = 0x0cd, mm_mtlo32_op = 0x0f5, mm_di_op = 0x11d, mm_jalrs_op = 0x13c, mm_jalrshb_op = 0x17c, mm_sync_op = 0x1ad, mm_syscall_op = 0x22d, mm_wait_op = 0x24d, mm_eret_op = 0x3cd, mm_divu_op = 0x5dc, }; /* * (microMIPS) POOL32F minor opcodes. */ enum mm_32f_minor_op { mm_32f_00_op = 0x00, mm_32f_01_op = 0x01, mm_32f_02_op = 0x02, mm_32f_10_op = 0x08, mm_32f_11_op = 0x09, mm_32f_12_op = 0x0a, mm_32f_20_op = 0x10, mm_32f_30_op = 0x18, mm_32f_40_op = 0x20, mm_32f_41_op = 0x21, mm_32f_42_op = 0x22, mm_32f_50_op = 0x28, mm_32f_51_op = 0x29, mm_32f_52_op = 0x2a, mm_32f_60_op = 0x30, mm_32f_70_op = 0x38, mm_32f_73_op = 0x3b, mm_32f_74_op = 0x3c, }; /* * (microMIPS) POOL32F secondary minor opcodes. */ enum mm_32f_10_minor_op { mm_lwxc1_op = 0x1, mm_swxc1_op, mm_ldxc1_op, mm_sdxc1_op, mm_luxc1_op, mm_suxc1_op, }; enum mm_32f_func { mm_lwxc1_func = 0x048, mm_swxc1_func = 0x088, mm_ldxc1_func = 0x0c8, mm_sdxc1_func = 0x108, }; /* * (microMIPS) POOL32F secondary minor opcodes. */ enum mm_32f_40_minor_op { mm_fmovf_op, mm_fmovt_op, }; /* * (microMIPS) POOL32F secondary minor opcodes. */ enum mm_32f_60_minor_op { mm_fadd_op, mm_fsub_op, mm_fmul_op, mm_fdiv_op, }; /* * (microMIPS) POOL32F secondary minor opcodes. */ enum mm_32f_70_minor_op { mm_fmovn_op, mm_fmovz_op, }; /* * (microMIPS) POOL32FXF secondary minor opcodes for POOL32F. */ enum mm_32f_73_minor_op { mm_fmov0_op = 0x01, mm_fcvtl_op = 0x04, mm_movf0_op = 0x05, mm_frsqrt_op = 0x08, mm_ffloorl_op = 0x0c, mm_fabs0_op = 0x0d, mm_fcvtw_op = 0x24, mm_movt0_op = 0x25, mm_fsqrt_op = 0x28, mm_ffloorw_op = 0x2c, mm_fneg0_op = 0x2d, mm_cfc1_op = 0x40, mm_frecip_op = 0x48, mm_fceill_op = 0x4c, mm_fcvtd0_op = 0x4d, mm_ctc1_op = 0x60, mm_fceilw_op = 0x6c, mm_fcvts0_op = 0x6d, mm_mfc1_op = 0x80, mm_fmov1_op = 0x81, mm_movf1_op = 0x85, mm_ftruncl_op = 0x8c, mm_fabs1_op = 0x8d, mm_mtc1_op = 0xa0, mm_movt1_op = 0xa5, mm_ftruncw_op = 0xac, mm_fneg1_op = 0xad, mm_mfhc1_op = 0xc0, mm_froundl_op = 0xcc, mm_fcvtd1_op = 0xcd, mm_mthc1_op = 0xe0, mm_froundw_op = 0xec, mm_fcvts1_op = 0xed, }; /* * (microMIPS) POOL32S minor opcodes. */ enum mm_32s_minor_op { mm_32s_elm_op = 0x16, }; /* * (microMIPS) POOL16C minor opcodes. */ enum mm_16c_minor_op { mm_lwm16_op = 0x04, mm_swm16_op = 0x05, mm_jr16_op = 0x0c, mm_jrc_op = 0x0d, mm_jalr16_op = 0x0e, mm_jalrs16_op = 0x0f, mm_jraddiusp_op = 0x18, }; /* * (microMIPS) POOL16D minor opcodes. */ enum mm_16d_minor_op { mm_addius5_func, mm_addiusp_func, }; /* * (MIPS16e) opcodes. */ enum MIPS16e_ops { MIPS16e_jal_op = 003, MIPS16e_ld_op = 007, MIPS16e_i8_op = 014, MIPS16e_sd_op = 017, MIPS16e_lb_op = 020, MIPS16e_lh_op = 021, MIPS16e_lwsp_op = 022, MIPS16e_lw_op = 023, MIPS16e_lbu_op = 024, MIPS16e_lhu_op = 025, MIPS16e_lwpc_op = 026, MIPS16e_lwu_op = 027, MIPS16e_sb_op = 030, MIPS16e_sh_op = 031, MIPS16e_swsp_op = 032, MIPS16e_sw_op = 033, MIPS16e_rr_op = 035, MIPS16e_extend_op = 036, MIPS16e_i64_op = 037, }; enum MIPS16e_i64_func { MIPS16e_ldsp_func, MIPS16e_sdsp_func, MIPS16e_sdrasp_func, MIPS16e_dadjsp_func, MIPS16e_ldpc_func, }; enum MIPS16e_rr_func { MIPS16e_jr_func, }; enum MIPS6e_i8_func { MIPS16e_swrasp_func = 02, }; /* * (microMIPS) NOP instruction. */ #define MM_NOP16 0x0c00 struct j_format { __BITFIELD_FIELD(unsigned int opcode : 6, /* Jump format */ __BITFIELD_FIELD(unsigned int target : 26, ;)) }; struct i_format { /* signed immediate format */ __BITFIELD_FIELD(unsigned int opcode : 6, __BITFIELD_FIELD(unsigned int rs : 5, __BITFIELD_FIELD(unsigned int rt : 5, __BITFIELD_FIELD(signed int simmediate : 16, ;)))) }; struct u_format { /* unsigned immediate format */ __BITFIELD_FIELD(unsigned int opcode : 6, __BITFIELD_FIELD(unsigned int rs : 5, __BITFIELD_FIELD(unsigned int rt : 5, __BITFIELD_FIELD(unsigned int uimmediate : 16, ;)))) }; struct c_format { /* Cache (>= R6000) format */ __BITFIELD_FIELD(unsigned int opcode : 6, __BITFIELD_FIELD(unsigned int rs : 5, __BITFIELD_FIELD(unsigned int c_op : 3, __BITFIELD_FIELD(unsigned int cache : 2, __BITFIELD_FIELD(unsigned int simmediate : 16, ;))))) }; struct r_format { /* Register format */ __BITFIELD_FIELD(unsigned int opcode : 6, __BITFIELD_FIELD(unsigned int rs : 5, __BITFIELD_FIELD(unsigned int rt : 5, __BITFIELD_FIELD(unsigned int rd : 5, __BITFIELD_FIELD(unsigned int re : 5, __BITFIELD_FIELD(unsigned int func : 6, ;)))))) }; struct c0r_format { /* C0 register format */ __BITFIELD_FIELD(unsigned int opcode : 6, __BITFIELD_FIELD(unsigned int rs : 5, __BITFIELD_FIELD(unsigned int rt : 5, __BITFIELD_FIELD(unsigned int rd : 5, __BITFIELD_FIELD(unsigned int z: 8, __BITFIELD_FIELD(unsigned int sel : 3, ;)))))) }; struct mfmc0_format { /* MFMC0 register format */ __BITFIELD_FIELD(unsigned int opcode : 6, __BITFIELD_FIELD(unsigned int rs : 5, __BITFIELD_FIELD(unsigned int rt : 5, __BITFIELD_FIELD(unsigned int rd : 5, __BITFIELD_FIELD(unsigned int re : 5, __BITFIELD_FIELD(unsigned int sc : 1, __BITFIELD_FIELD(unsigned int : 2, __BITFIELD_FIELD(unsigned int sel : 3, ;)))))))) }; struct co_format { /* C0 CO format */ __BITFIELD_FIELD(unsigned int opcode : 6, __BITFIELD_FIELD(unsigned int co : 1, __BITFIELD_FIELD(unsigned int code : 19, __BITFIELD_FIELD(unsigned int func : 6, ;)))) }; struct p_format { /* Performance counter format (R10000) */ __BITFIELD_FIELD(unsigned int opcode : 6, __BITFIELD_FIELD(unsigned int rs : 5, __BITFIELD_FIELD(unsigned int rt : 5, __BITFIELD_FIELD(unsigned int rd : 5, __BITFIELD_FIELD(unsigned int re : 5, __BITFIELD_FIELD(unsigned int func : 6, ;)))))) }; struct f_format { /* FPU register format */ __BITFIELD_FIELD(unsigned int opcode : 6, __BITFIELD_FIELD(unsigned int : 1, __BITFIELD_FIELD(unsigned int fmt : 4, __BITFIELD_FIELD(unsigned int rt : 5, __BITFIELD_FIELD(unsigned int rd : 5, __BITFIELD_FIELD(unsigned int re : 5, __BITFIELD_FIELD(unsigned int func : 6, ;))))))) }; struct ma_format { /* FPU multiply and add format (MIPS IV) */ __BITFIELD_FIELD(unsigned int opcode : 6, __BITFIELD_FIELD(unsigned int fr : 5, __BITFIELD_FIELD(unsigned int ft : 5, __BITFIELD_FIELD(unsigned int fs : 5, __BITFIELD_FIELD(unsigned int fd : 5, __BITFIELD_FIELD(unsigned int func : 4, __BITFIELD_FIELD(unsigned int fmt : 2, ;))))))) }; struct b_format { /* BREAK and SYSCALL */ __BITFIELD_FIELD(unsigned int opcode : 6, __BITFIELD_FIELD(unsigned int code : 20, __BITFIELD_FIELD(unsigned int func : 6, ;))) }; struct ps_format { /* MIPS-3D / paired single format */ __BITFIELD_FIELD(unsigned int opcode : 6, __BITFIELD_FIELD(unsigned int rs : 5, __BITFIELD_FIELD(unsigned int ft : 5, __BITFIELD_FIELD(unsigned int fs : 5, __BITFIELD_FIELD(unsigned int fd : 5, __BITFIELD_FIELD(unsigned int func : 6, ;)))))) }; struct v_format { /* MDMX vector format */ __BITFIELD_FIELD(unsigned int opcode : 6, __BITFIELD_FIELD(unsigned int sel : 4, __BITFIELD_FIELD(unsigned int fmt : 1, __BITFIELD_FIELD(unsigned int vt : 5, __BITFIELD_FIELD(unsigned int vs : 5, __BITFIELD_FIELD(unsigned int vd : 5, __BITFIELD_FIELD(unsigned int func : 6, ;))))))) }; struct msa_mi10_format { /* MSA MI10 */ __BITFIELD_FIELD(unsigned int opcode : 6, __BITFIELD_FIELD(signed int s10 : 10, __BITFIELD_FIELD(unsigned int rs : 5, __BITFIELD_FIELD(unsigned int wd : 5, __BITFIELD_FIELD(unsigned int func : 4, __BITFIELD_FIELD(unsigned int df : 2, ;)))))) }; struct dsp_format { /* SPEC3 DSP format instructions */ __BITFIELD_FIELD(unsigned int opcode : 6, __BITFIELD_FIELD(unsigned int base : 5, __BITFIELD_FIELD(unsigned int index : 5, __BITFIELD_FIELD(unsigned int rd : 5, __BITFIELD_FIELD(unsigned int op : 5, __BITFIELD_FIELD(unsigned int func : 6, ;)))))) }; struct spec3_format { /* SPEC3 */ __BITFIELD_FIELD(unsigned int opcode:6, __BITFIELD_FIELD(unsigned int rs:5, __BITFIELD_FIELD(unsigned int rt:5, __BITFIELD_FIELD(signed int simmediate:9, __BITFIELD_FIELD(unsigned int func:7, ;))))) }; /* * microMIPS instruction formats (32-bit length) * * NOTE: * Parenthesis denote whether the format is a microMIPS instruction or * if it is MIPS32 instruction re-encoded for use in the microMIPS ASE. */ struct fb_format { /* FPU branch format (MIPS32) */ __BITFIELD_FIELD(unsigned int opcode : 6, __BITFIELD_FIELD(unsigned int bc : 5, __BITFIELD_FIELD(unsigned int cc : 3, __BITFIELD_FIELD(unsigned int flag : 2, __BITFIELD_FIELD(signed int simmediate : 16, ;))))) }; struct fp0_format { /* FPU multiply and add format (MIPS32) */ __BITFIELD_FIELD(unsigned int opcode : 6, __BITFIELD_FIELD(unsigned int fmt : 5, __BITFIELD_FIELD(unsigned int ft : 5, __BITFIELD_FIELD(unsigned int fs : 5, __BITFIELD_FIELD(unsigned int fd : 5, __BITFIELD_FIELD(unsigned int func : 6, ;)))))) }; struct mm_fp0_format { /* FPU multiply and add format (microMIPS) */ __BITFIELD_FIELD(unsigned int opcode : 6, __BITFIELD_FIELD(unsigned int ft : 5, __BITFIELD_FIELD(unsigned int fs : 5, __BITFIELD_FIELD(unsigned int fd : 5, __BITFIELD_FIELD(unsigned int fmt : 3, __BITFIELD_FIELD(unsigned int op : 2, __BITFIELD_FIELD(unsigned int func : 6, ;))))))) }; struct fp1_format { /* FPU mfc1 and cfc1 format (MIPS32) */ __BITFIELD_FIELD(unsigned int opcode : 6, __BITFIELD_FIELD(unsigned int op : 5, __BITFIELD_FIELD(unsigned int rt : 5, __BITFIELD_FIELD(unsigned int fs : 5, __BITFIELD_FIELD(unsigned int fd : 5, __BITFIELD_FIELD(unsigned int func : 6, ;)))))) }; struct mm_fp1_format { /* FPU mfc1 and cfc1 format (microMIPS) */ __BITFIELD_FIELD(unsigned int opcode : 6, __BITFIELD_FIELD(unsigned int rt : 5, __BITFIELD_FIELD(unsigned int fs : 5, __BITFIELD_FIELD(unsigned int fmt : 2, __BITFIELD_FIELD(unsigned int op : 8, __BITFIELD_FIELD(unsigned int func : 6, ;)))))) }; struct mm_fp2_format { /* FPU movt and movf format (microMIPS) */ __BITFIELD_FIELD(unsigned int opcode : 6, __BITFIELD_FIELD(unsigned int fd : 5, __BITFIELD_FIELD(unsigned int fs : 5, __BITFIELD_FIELD(unsigned int cc : 3, __BITFIELD_FIELD(unsigned int zero : 2, __BITFIELD_FIELD(unsigned int fmt : 2, __BITFIELD_FIELD(unsigned int op : 3, __BITFIELD_FIELD(unsigned int func : 6, ;)))))))) }; struct mm_fp3_format { /* FPU abs and neg format (microMIPS) */ __BITFIELD_FIELD(unsigned int opcode : 6, __BITFIELD_FIELD(unsigned int rt : 5, __BITFIELD_FIELD(unsigned int fs : 5, __BITFIELD_FIELD(unsigned int fmt : 3, __BITFIELD_FIELD(unsigned int op : 7, __BITFIELD_FIELD(unsigned int func : 6, ;)))))) }; struct mm_fp4_format { /* FPU c.cond format (microMIPS) */ __BITFIELD_FIELD(unsigned int opcode : 6, __BITFIELD_FIELD(unsigned int rt : 5, __BITFIELD_FIELD(unsigned int fs : 5, __BITFIELD_FIELD(unsigned int cc : 3, __BITFIELD_FIELD(unsigned int fmt : 3, __BITFIELD_FIELD(unsigned int cond : 4, __BITFIELD_FIELD(unsigned int func : 6, ;))))))) }; struct mm_fp5_format { /* FPU lwxc1 and swxc1 format (microMIPS) */ __BITFIELD_FIELD(unsigned int opcode : 6, __BITFIELD_FIELD(unsigned int index : 5, __BITFIELD_FIELD(unsigned int base : 5, __BITFIELD_FIELD(unsigned int fd : 5, __BITFIELD_FIELD(unsigned int op : 5, __BITFIELD_FIELD(unsigned int func : 6, ;)))))) }; struct fp6_format { /* FPU madd and msub format (MIPS IV) */ __BITFIELD_FIELD(unsigned int opcode : 6, __BITFIELD_FIELD(unsigned int fr : 5, __BITFIELD_FIELD(unsigned int ft : 5, __BITFIELD_FIELD(unsigned int fs : 5, __BITFIELD_FIELD(unsigned int fd : 5, __BITFIELD_FIELD(unsigned int func : 6, ;)))))) }; struct mm_fp6_format { /* FPU madd and msub format (microMIPS) */ __BITFIELD_FIELD(unsigned int opcode : 6, __BITFIELD_FIELD(unsigned int ft : 5, __BITFIELD_FIELD(unsigned int fs : 5, __BITFIELD_FIELD(unsigned int fd : 5, __BITFIELD_FIELD(unsigned int fr : 5, __BITFIELD_FIELD(unsigned int func : 6, ;)))))) }; struct mm_i_format { /* Immediate format (microMIPS) */ __BITFIELD_FIELD(unsigned int opcode : 6, __BITFIELD_FIELD(unsigned int rt : 5, __BITFIELD_FIELD(unsigned int rs : 5, __BITFIELD_FIELD(signed int simmediate : 16, ;)))) }; struct mm_m_format { /* Multi-word load/store format (microMIPS) */ __BITFIELD_FIELD(unsigned int opcode : 6, __BITFIELD_FIELD(unsigned int rd : 5, __BITFIELD_FIELD(unsigned int base : 5, __BITFIELD_FIELD(unsigned int func : 4, __BITFIELD_FIELD(signed int simmediate : 12, ;))))) }; struct mm_x_format { /* Scaled indexed load format (microMIPS) */ __BITFIELD_FIELD(unsigned int opcode : 6, __BITFIELD_FIELD(unsigned int index : 5, __BITFIELD_FIELD(unsigned int base : 5, __BITFIELD_FIELD(unsigned int rd : 5, __BITFIELD_FIELD(unsigned int func : 11, ;))))) }; struct mm_a_format { /* ADDIUPC format (microMIPS) */ __BITFIELD_FIELD(unsigned int opcode : 6, __BITFIELD_FIELD(unsigned int rs : 3, __BITFIELD_FIELD(signed int simmediate : 23, ;))) }; /* * microMIPS instruction formats (16-bit length) */ struct mm_b0_format { /* Unconditional branch format (microMIPS) */ __BITFIELD_FIELD(unsigned int opcode : 6, __BITFIELD_FIELD(signed int simmediate : 10, __BITFIELD_FIELD(unsigned int : 16, /* Ignored */ ;))) }; struct mm_b1_format { /* Conditional branch format (microMIPS) */ __BITFIELD_FIELD(unsigned int opcode : 6, __BITFIELD_FIELD(unsigned int rs : 3, __BITFIELD_FIELD(signed int simmediate : 7, __BITFIELD_FIELD(unsigned int : 16, /* Ignored */ ;)))) }; struct mm16_m_format { /* Multi-word load/store format */ __BITFIELD_FIELD(unsigned int opcode : 6, __BITFIELD_FIELD(unsigned int func : 4, __BITFIELD_FIELD(unsigned int rlist : 2, __BITFIELD_FIELD(unsigned int imm : 4, __BITFIELD_FIELD(unsigned int : 16, /* Ignored */ ;))))) }; struct mm16_rb_format { /* Signed immediate format */ __BITFIELD_FIELD(unsigned int opcode : 6, __BITFIELD_FIELD(unsigned int rt : 3, __BITFIELD_FIELD(unsigned int base : 3, __BITFIELD_FIELD(signed int simmediate : 4, __BITFIELD_FIELD(unsigned int : 16, /* Ignored */ ;))))) }; struct mm16_r3_format { /* Load from global pointer format */ __BITFIELD_FIELD(unsigned int opcode : 6, __BITFIELD_FIELD(unsigned int rt : 3, __BITFIELD_FIELD(signed int simmediate : 7, __BITFIELD_FIELD(unsigned int : 16, /* Ignored */ ;)))) }; struct mm16_r5_format { /* Load/store from stack pointer format */ __BITFIELD_FIELD(unsigned int opcode : 6, __BITFIELD_FIELD(unsigned int rt : 5, __BITFIELD_FIELD(unsigned int imm : 5, __BITFIELD_FIELD(unsigned int : 16, /* Ignored */ ;)))) }; /* * Loongson-3 overridden COP2 instruction formats (32-bit length) */ struct loongson3_lswc2_format { /* Loongson-3 overridden lwc2/swc2 Load/Store format */ __BITFIELD_FIELD(unsigned int opcode : 6, __BITFIELD_FIELD(unsigned int base : 5, __BITFIELD_FIELD(unsigned int rt : 5, __BITFIELD_FIELD(unsigned int fr : 1, __BITFIELD_FIELD(unsigned int offset : 9, __BITFIELD_FIELD(unsigned int ls : 1, __BITFIELD_FIELD(unsigned int rq : 5, ;))))))) }; struct loongson3_lsdc2_format { /* Loongson-3 overridden ldc2/sdc2 Load/Store format */ __BITFIELD_FIELD(unsigned int opcode : 6, __BITFIELD_FIELD(unsigned int base : 5, __BITFIELD_FIELD(unsigned int rt : 5, __BITFIELD_FIELD(unsigned int index : 5, __BITFIELD_FIELD(unsigned int offset : 8, __BITFIELD_FIELD(unsigned int opcode1 : 3, ;)))))) }; struct loongson3_lscsr_format { /* Loongson-3 CPUCFG&CSR read/write format */ __BITFIELD_FIELD(unsigned int opcode : 6, __BITFIELD_FIELD(unsigned int rs : 5, __BITFIELD_FIELD(unsigned int fr : 5, __BITFIELD_FIELD(unsigned int rd : 5, __BITFIELD_FIELD(unsigned int fd : 5, __BITFIELD_FIELD(unsigned int func : 6, ;)))))) }; /* * MIPS16e instruction formats (16-bit length) */ struct m16e_rr { __BITFIELD_FIELD(unsigned int opcode : 5, __BITFIELD_FIELD(unsigned int rx : 3, __BITFIELD_FIELD(unsigned int nd : 1, __BITFIELD_FIELD(unsigned int l : 1, __BITFIELD_FIELD(unsigned int ra : 1, __BITFIELD_FIELD(unsigned int func : 5, ;)))))) }; struct m16e_jal { __BITFIELD_FIELD(unsigned int opcode : 5, __BITFIELD_FIELD(unsigned int x : 1, __BITFIELD_FIELD(unsigned int imm20_16 : 5, __BITFIELD_FIELD(signed int imm25_21 : 5, ;)))) }; struct m16e_i64 { __BITFIELD_FIELD(unsigned int opcode : 5, __BITFIELD_FIELD(unsigned int func : 3, __BITFIELD_FIELD(unsigned int imm : 8, ;))) }; struct m16e_ri64 { __BITFIELD_FIELD(unsigned int opcode : 5, __BITFIELD_FIELD(unsigned int func : 3, __BITFIELD_FIELD(unsigned int ry : 3, __BITFIELD_FIELD(unsigned int imm : 5, ;)))) }; struct m16e_ri { __BITFIELD_FIELD(unsigned int opcode : 5, __BITFIELD_FIELD(unsigned int rx : 3, __BITFIELD_FIELD(unsigned int imm : 8, ;))) }; struct m16e_rri { __BITFIELD_FIELD(unsigned int opcode : 5, __BITFIELD_FIELD(unsigned int rx : 3, __BITFIELD_FIELD(unsigned int ry : 3, __BITFIELD_FIELD(unsigned int imm : 5, ;)))) }; struct m16e_i8 { __BITFIELD_FIELD(unsigned int opcode : 5, __BITFIELD_FIELD(unsigned int func : 3, __BITFIELD_FIELD(unsigned int imm : 8, ;))) }; union mips_instruction { unsigned int word; unsigned short halfword[2]; unsigned char byte[4]; struct j_format j_format; struct i_format i_format; struct u_format u_format; struct c_format c_format; struct r_format r_format; struct c0r_format c0r_format; struct mfmc0_format mfmc0_format; struct co_format co_format; struct p_format p_format; struct f_format f_format; struct ma_format ma_format; struct msa_mi10_format msa_mi10_format; struct b_format b_format; struct ps_format ps_format; struct v_format v_format; struct dsp_format dsp_format; struct spec3_format spec3_format; struct fb_format fb_format; struct fp0_format fp0_format; struct mm_fp0_format mm_fp0_format; struct fp1_format fp1_format; struct mm_fp1_format mm_fp1_format; struct mm_fp2_format mm_fp2_format; struct mm_fp3_format mm_fp3_format; struct mm_fp4_format mm_fp4_format; struct mm_fp5_format mm_fp5_format; struct fp6_format fp6_format; struct mm_fp6_format mm_fp6_format; struct mm_i_format mm_i_format; struct mm_m_format mm_m_format; struct mm_x_format mm_x_format; struct mm_a_format mm_a_format; struct mm_b0_format mm_b0_format; struct mm_b1_format mm_b1_format; struct mm16_m_format mm16_m_format ; struct mm16_rb_format mm16_rb_format; struct mm16_r3_format mm16_r3_format; struct mm16_r5_format mm16_r5_format; struct loongson3_lswc2_format loongson3_lswc2_format; struct loongson3_lsdc2_format loongson3_lsdc2_format; struct loongson3_lscsr_format loongson3_lscsr_format; }; union mips16e_instruction { unsigned int full : 16; struct m16e_rr rr; struct m16e_jal jal; struct m16e_i64 i64; struct m16e_ri64 ri64; struct m16e_ri ri; struct m16e_rri rri; struct m16e_i8 i8; }; #endif /* _UAPI_ASM_INST_H */ PK ! ��5+� � bitfield.hnu �[��� /* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */ /* * This file is subject to the terms and conditions of the GNU General Public * License. See the file "COPYING" in the main directory of this archive * for more details. * * Copyright (C) 2014 by Ralf Baechle <ralf@linux-mips.org> */ #ifndef __UAPI_ASM_BITFIELD_H #define __UAPI_ASM_BITFIELD_H /* * * Damn ... bitfields depend from byteorder :-( * */ #ifdef __MIPSEB__ #define __BITFIELD_FIELD(field, more) \ field; \ more #elif defined(__MIPSEL__) #define __BITFIELD_FIELD(field, more) \ more \ field; #else /* !defined (__MIPSEB__) && !defined (__MIPSEL__) */ #error "MIPS but neither __MIPSEL__ nor __MIPSEB__?" #endif #endif /* __UAPI_ASM_BITFIELD_H */ PK ! �t�� � errno.hnu �[��� /* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */ /* * This file is subject to the terms and conditions of the GNU General Public * License. See the file "COPYING" in the main directory of this archive * for more details. * * Copyright (C) 1995, 1999, 2001, 2002 by Ralf Baechle */ #ifndef _UAPI_ASM_ERRNO_H #define _UAPI_ASM_ERRNO_H /* * These error numbers are intended to be MIPS ABI compatible */ #include <asm-generic/errno-base.h> #define ENOMSG 35 /* No message of desired type */ #define EIDRM 36 /* Identifier removed */ #define ECHRNG 37 /* Channel number out of range */ #define EL2NSYNC 38 /* Level 2 not synchronized */ #define EL3HLT 39 /* Level 3 halted */ #define EL3RST 40 /* Level 3 reset */ #define ELNRNG 41 /* Link number out of range */ #define EUNATCH 42 /* Protocol driver not attached */ #define ENOCSI 43 /* No CSI structure available */ #define EL2HLT 44 /* Level 2 halted */ #define EDEADLK 45 /* Resource deadlock would occur */ #define ENOLCK 46 /* No record locks available */ #define EBADE 50 /* Invalid exchange */ #define EBADR 51 /* Invalid request descriptor */ #define EXFULL 52 /* Exchange full */ #define ENOANO 53 /* No anode */ #define EBADRQC 54 /* Invalid request code */ #define EBADSLT 55 /* Invalid slot */ #define EDEADLOCK 56 /* File locking deadlock error */ #define EBFONT 59 /* Bad font file format */ #define ENOSTR 60 /* Device not a stream */ #define ENODATA 61 /* No data available */ #define ETIME 62 /* Timer expired */ #define ENOSR 63 /* Out of streams resources */ #define ENONET 64 /* Machine is not on the network */ #define ENOPKG 65 /* Package not installed */ #define EREMOTE 66 /* Object is remote */ #define ENOLINK 67 /* Link has been severed */ #define EADV 68 /* Advertise error */ #define ESRMNT 69 /* Srmount error */ #define ECOMM 70 /* Communication error on send */ #define EPROTO 71 /* Protocol error */ #define EDOTDOT 73 /* RFS specific error */ #define EMULTIHOP 74 /* Multihop attempted */ #define EBADMSG 77 /* Not a data message */ #define ENAMETOOLONG 78 /* File name too long */ #define EOVERFLOW 79 /* Value too large for defined data type */ #define ENOTUNIQ 80 /* Name not unique on network */ #define EBADFD 81 /* File descriptor in bad state */ #define EREMCHG 82 /* Remote address changed */ #define ELIBACC 83 /* Can not access a needed shared library */ #define ELIBBAD 84 /* Accessing a corrupted shared library */ #define ELIBSCN 85 /* .lib section in a.out corrupted */ #define ELIBMAX 86 /* Attempting to link in too many shared libraries */ #define ELIBEXEC 87 /* Cannot exec a shared library directly */ #define EILSEQ 88 /* Illegal byte sequence */ #define ENOSYS 89 /* Function not implemented */ #define ELOOP 90 /* Too many symbolic links encountered */ #define ERESTART 91 /* Interrupted system call should be restarted */ #define ESTRPIPE 92 /* Streams pipe error */ #define ENOTEMPTY 93 /* Directory not empty */ #define EUSERS 94 /* Too many users */ #define ENOTSOCK 95 /* Socket operation on non-socket */ #define EDESTADDRREQ 96 /* Destination address required */ #define EMSGSIZE 97 /* Message too long */ #define EPROTOTYPE 98 /* Protocol wrong type for socket */ #define ENOPROTOOPT 99 /* Protocol not available */ #define EPROTONOSUPPORT 120 /* Protocol not supported */ #define ESOCKTNOSUPPORT 121 /* Socket type not supported */ #define EOPNOTSUPP 122 /* Operation not supported on transport endpoint */ #define EPFNOSUPPORT 123 /* Protocol family not supported */ #define EAFNOSUPPORT 124 /* Address family not supported by protocol */ #define EADDRINUSE 125 /* Address already in use */ #define EADDRNOTAVAIL 126 /* Cannot assign requested address */ #define ENETDOWN 127 /* Network is down */ #define ENETUNREACH 128 /* Network is unreachable */ #define ENETRESET 129 /* Network dropped connection because of reset */ #define ECONNABORTED 130 /* Software caused connection abort */ #define ECONNRESET 131 /* Connection reset by peer */ #define ENOBUFS 132 /* No buffer space available */ #define EISCONN 133 /* Transport endpoint is already connected */ #define ENOTCONN 134 /* Transport endpoint is not connected */ #define EUCLEAN 135 /* Structure needs cleaning */ #define ENOTNAM 137 /* Not a XENIX named type file */ #define ENAVAIL 138 /* No XENIX semaphores available */ #define EISNAM 139 /* Is a named type file */ #define EREMOTEIO 140 /* Remote I/O error */ #define EINIT 141 /* Reserved */ #define EREMDEV 142 /* Error 142 */ #define ESHUTDOWN 143 /* Cannot send after transport endpoint shutdown */ #define ETOOMANYREFS 144 /* Too many references: cannot splice */ #define ETIMEDOUT 145 /* Connection timed out */ #define ECONNREFUSED 146 /* Connection refused */ #define EHOSTDOWN 147 /* Host is down */ #define EHOSTUNREACH 148 /* No route to host */ #define EWOULDBLOCK EAGAIN /* Operation would block */ #define EALREADY 149 /* Operation already in progress */ #define EINPROGRESS 150 /* Operation now in progress */ #define ESTALE 151 /* Stale file handle */ #define ECANCELED 158 /* AIO operation canceled */ /* * These error are Linux extensions. */ #define ENOMEDIUM 159 /* No medium found */ #define EMEDIUMTYPE 160 /* Wrong medium type */ #define ENOKEY 161 /* Required key not available */ #define EKEYEXPIRED 162 /* Key has expired */ #define EKEYREVOKED 163 /* Key has been revoked */ #define EKEYREJECTED 164 /* Key was rejected by service */ /* for robust mutexes */ #define EOWNERDEAD 165 /* Owner died */ #define ENOTRECOVERABLE 166 /* State not recoverable */ #define ERFKILL 167 /* Operation not possible due to RF-kill */ #define EHWPOISON 168 /* Memory page has hardware error */ #define EDQUOT 1133 /* Quota exceeded */ #endif /* _UAPI_ASM_ERRNO_H */ PK ! �@c6 6 socket.hnu �[��� /* SPDX-License-Identifier: GPL-2.0 */ #ifndef _ASM_SOCKET_H #define _ASM_SOCKET_H #include <uapi/asm/socket.h> /* O_NONBLOCK clashes with the bits used for socket types. Therefore we * have to define SOCK_NONBLOCK to a different value here. */ #define SOCK_NONBLOCK 0x40000000 #endif /* _ASM_SOCKET_H */ PK ! ���[I I sysmips.hnu �[��� /* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */ /* * Definitions for the MIPS sysmips(2) call * * This file is subject to the terms and conditions of the GNU General Public * License. See the file "COPYING" in the main directory of this archive * for more details. * * Copyright (C) 1995 by Ralf Baechle */ #ifndef _ASM_SYSMIPS_H #define _ASM_SYSMIPS_H /* * Commands for the sysmips(2) call * * sysmips(2) is deprecated - though some existing software uses it. * We only support the following commands. */ #define SETNAME 1 /* set hostname */ #define FLUSH_CACHE 3 /* writeback and invalidate caches */ #define MIPS_FIXADE 7 /* control address error fixing */ #define MIPS_RDNVRAM 10 /* read NVRAM */ #define MIPS_ATOMIC_SET 2001 /* atomically set variable */ #endif /* _ASM_SYSMIPS_H */ PK ! ���- sgidefs.hnu �[��� /* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */ /* * This file is subject to the terms and conditions of the GNU General Public * License. See the file "COPYING" in the main directory of this archive * for more details. * * Copyright (C) 1996, 1999, 2001 Ralf Baechle * Copyright (C) 1999 Silicon Graphics, Inc. * Copyright (C) 2001 MIPS Technologies, Inc. */ #ifndef __ASM_SGIDEFS_H #define __ASM_SGIDEFS_H /* * Definitions for the ISA levels * * With the introduction of MIPS32 / MIPS64 instruction sets definitions * MIPS ISAs are no longer subsets of each other. Therefore comparisons * on these symbols except with == may result in unexpected results and * are forbidden! */ #define _MIPS_ISA_MIPS1 1 #define _MIPS_ISA_MIPS2 2 #define _MIPS_ISA_MIPS3 3 #define _MIPS_ISA_MIPS4 4 #define _MIPS_ISA_MIPS5 5 #define _MIPS_ISA_MIPS32 6 #define _MIPS_ISA_MIPS64 7 /* * Subprogram calling convention */ #define _MIPS_SIM_ABI32 1 #define _MIPS_SIM_NABI32 2 #define _MIPS_SIM_ABI64 3 #endif /* __ASM_SGIDEFS_H */ PK ! Ʈ]� ioctl.hnu �[��� /* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */ /* * This file is subject to the terms and conditions of the GNU General Public * License. See the file "COPYING" in the main directory of this archive * for more details. * * Copyright (C) 1995, 96, 99, 2001 Ralf Baechle <ralf@linux-mips.org> * Copyright (C) 2009 Wind River Systems * Written by Ralf Baechle <ralf@linux-mips.org> */ #ifndef __ASM_IOCTL_H #define __ASM_IOCTL_H #define _IOC_SIZEBITS 13 #define _IOC_DIRBITS 3 /* * Direction bits _IOC_NONE could be 0, but OSF/1 gives it a bit. * And this turns out useful to catch old ioctl numbers in header * files for us. */ #define _IOC_NONE 1U #define _IOC_READ 2U #define _IOC_WRITE 4U #include <asm-generic/ioctl.h> #endif /* __ASM_IOCTL_H */ PK ! ���� � .syscalls_32.h.cmdnu �[��� cmd_arch/x86/include/generated/asm/syscalls_32.h := sh /build/linux-6CgZId/linux-5.15.0/scripts/syscalltbl.sh --abis i386 /build/linux-6CgZId/linux-5.15.0/arch/x86/entry/syscalls/syscall_32.tbl arch/x86/include/generated/asm/syscalls_32.h PK ! vS� unistd_64_x32.hnu �[��� #ifndef _UAPI_ASM_UNISTD_64_X32_H #define _UAPI_ASM_UNISTD_64_X32_H #define __NR_x32_rt_sigaction 512 #define __NR_x32_rt_sigreturn 513 #define __NR_x32_ioctl 514 #define __NR_x32_readv 515 #define __NR_x32_writev 516 #define __NR_x32_recvfrom 517 #define __NR_x32_sendmsg 518 #define __NR_x32_recvmsg 519 #define __NR_x32_execve 520 #define __NR_x32_ptrace 521 #define __NR_x32_rt_sigpending 522 #define __NR_x32_rt_sigtimedwait 523 #define __NR_x32_rt_sigqueueinfo 524 #define __NR_x32_sigaltstack 525 #define __NR_x32_timer_create 526 #define __NR_x32_mq_notify 527 #define __NR_x32_kexec_load 528 #define __NR_x32_waitid 529 #define __NR_x32_set_robust_list 530 #define __NR_x32_get_robust_list 531 #define __NR_x32_vmsplice 532 #define __NR_x32_move_pages 533 #define __NR_x32_preadv 534 #define __NR_x32_pwritev 535 #define __NR_x32_rt_tgsigqueueinfo 536 #define __NR_x32_recvmmsg 537 #define __NR_x32_sendmmsg 538 #define __NR_x32_process_vm_readv 539 #define __NR_x32_process_vm_writev 540 #define __NR_x32_setsockopt 541 #define __NR_x32_getsockopt 542 #define __NR_x32_io_setup 543 #define __NR_x32_io_submit 544 #define __NR_x32_execveat 545 #define __NR_x32_preadv2 546 #define __NR_x32_pwritev2 547 #ifdef __KERNEL__ #define __NR_x32_syscalls 548 #endif #endif /* _UAPI_ASM_UNISTD_64_X32_H */ PK ! �[, , rwonce.hnu �[��� /* SPDX-License-Identifier: GPL-2.0 */ /* * Copyright (C) 2019 Google LLC. */ #ifndef __ASM_RWONCE_H #define __ASM_RWONCE_H #ifdef CONFIG_SMP #include <asm/barrier.h> /* * Alpha is apparently daft enough to reorder address-dependent loads * on some CPU implementations. Knock some common sense into it with * a memory barrier in READ_ONCE(). * * For the curious, more information about this unusual reordering is * available in chapter 15 of the "perfbook": * * https://kernel.org/pub/linux/kernel/people/paulmck/perfbook/perfbook.html * */ #define __READ_ONCE(x) \ ({ \ __unqual_scalar_typeof(x) __x = \ (*(volatile typeof(__x) *)(&(x))); \ mb(); \ (typeof(x))__x; \ }) #endif /* CONFIG_SMP */ #include <asm-generic/rwonce.h> #endif /* __ASM_RWONCE_H */ PK ! 1���4 �4 syscalls_64.hnu �[��� __SYSCALL(0, sys_read) __SYSCALL(1, sys_write) __SYSCALL(2, sys_open) __SYSCALL(3, sys_close) __SYSCALL(4, sys_newstat) __SYSCALL(5, sys_newfstat) __SYSCALL(6, sys_newlstat) __SYSCALL(7, sys_poll) __SYSCALL(8, sys_lseek) __SYSCALL(9, sys_mmap) __SYSCALL(10, sys_mprotect) __SYSCALL(11, sys_munmap) __SYSCALL(12, sys_brk) __SYSCALL(13, sys_rt_sigaction) __SYSCALL(14, sys_rt_sigprocmask) __SYSCALL(15, sys_rt_sigreturn) __SYSCALL(16, sys_ioctl) __SYSCALL(17, sys_pread64) __SYSCALL(18, sys_pwrite64) __SYSCALL(19, sys_readv) __SYSCALL(20, sys_writev) __SYSCALL(21, sys_access) __SYSCALL(22, sys_pipe) __SYSCALL(23, sys_select) __SYSCALL(24, sys_sched_yield) __SYSCALL(25, sys_mremap) __SYSCALL(26, sys_msync) __SYSCALL(27, sys_mincore) __SYSCALL(28, sys_madvise) __SYSCALL(29, sys_shmget) __SYSCALL(30, sys_shmat) __SYSCALL(31, sys_shmctl) __SYSCALL(32, sys_dup) __SYSCALL(33, sys_dup2) __SYSCALL(34, sys_pause) __SYSCALL(35, sys_nanosleep) __SYSCALL(36, sys_getitimer) __SYSCALL(37, sys_alarm) __SYSCALL(38, sys_setitimer) __SYSCALL(39, sys_getpid) __SYSCALL(40, sys_sendfile64) __SYSCALL(41, sys_socket) __SYSCALL(42, sys_connect) __SYSCALL(43, sys_accept) __SYSCALL(44, sys_sendto) __SYSCALL(45, sys_recvfrom) __SYSCALL(46, sys_sendmsg) __SYSCALL(47, sys_recvmsg) __SYSCALL(48, sys_shutdown) __SYSCALL(49, sys_bind) __SYSCALL(50, sys_listen) __SYSCALL(51, sys_getsockname) __SYSCALL(52, sys_getpeername) __SYSCALL(53, sys_socketpair) __SYSCALL(54, sys_setsockopt) __SYSCALL(55, sys_getsockopt) __SYSCALL(56, sys_clone) __SYSCALL(57, sys_fork) __SYSCALL(58, sys_vfork) __SYSCALL(59, sys_execve) __SYSCALL(60, sys_exit) __SYSCALL(61, sys_wait4) __SYSCALL(62, sys_kill) __SYSCALL(63, sys_newuname) __SYSCALL(64, sys_semget) __SYSCALL(65, sys_semop) __SYSCALL(66, sys_semctl) __SYSCALL(67, sys_shmdt) __SYSCALL(68, sys_msgget) __SYSCALL(69, sys_msgsnd) __SYSCALL(70, sys_msgrcv) __SYSCALL(71, sys_msgctl) __SYSCALL(72, sys_fcntl) __SYSCALL(73, sys_flock) __SYSCALL(74, sys_fsync) __SYSCALL(75, sys_fdatasync) __SYSCALL(76, sys_truncate) __SYSCALL(77, sys_ftruncate) __SYSCALL(78, sys_getdents) __SYSCALL(79, sys_getcwd) __SYSCALL(80, sys_chdir) __SYSCALL(81, sys_fchdir) __SYSCALL(82, sys_rename) __SYSCALL(83, sys_mkdir) __SYSCALL(84, sys_rmdir) __SYSCALL(85, sys_creat) __SYSCALL(86, sys_link) __SYSCALL(87, sys_unlink) __SYSCALL(88, sys_symlink) __SYSCALL(89, sys_readlink) __SYSCALL(90, sys_chmod) __SYSCALL(91, sys_fchmod) __SYSCALL(92, sys_chown) __SYSCALL(93, sys_fchown) __SYSCALL(94, sys_lchown) __SYSCALL(95, sys_umask) __SYSCALL(96, sys_gettimeofday) __SYSCALL(97, sys_getrlimit) __SYSCALL(98, sys_getrusage) __SYSCALL(99, sys_sysinfo) __SYSCALL(100, sys_times) __SYSCALL(101, sys_ptrace) __SYSCALL(102, sys_getuid) __SYSCALL(103, sys_syslog) __SYSCALL(104, sys_getgid) __SYSCALL(105, sys_setuid) __SYSCALL(106, sys_setgid) __SYSCALL(107, sys_geteuid) __SYSCALL(108, sys_getegid) __SYSCALL(109, sys_setpgid) __SYSCALL(110, sys_getppid) __SYSCALL(111, sys_getpgrp) __SYSCALL(112, sys_setsid) __SYSCALL(113, sys_setreuid) __SYSCALL(114, sys_setregid) __SYSCALL(115, sys_getgroups) __SYSCALL(116, sys_setgroups) __SYSCALL(117, sys_setresuid) __SYSCALL(118, sys_getresuid) __SYSCALL(119, sys_setresgid) __SYSCALL(120, sys_getresgid) __SYSCALL(121, sys_getpgid) __SYSCALL(122, sys_setfsuid) __SYSCALL(123, sys_setfsgid) __SYSCALL(124, sys_getsid) __SYSCALL(125, sys_capget) __SYSCALL(126, sys_capset) __SYSCALL(127, sys_rt_sigpending) __SYSCALL(128, sys_rt_sigtimedwait) __SYSCALL(129, sys_rt_sigqueueinfo) __SYSCALL(130, sys_rt_sigsuspend) __SYSCALL(131, sys_sigaltstack) __SYSCALL(132, sys_utime) __SYSCALL(133, sys_mknod) __SYSCALL(134, sys_ni_syscall) __SYSCALL(135, sys_personality) __SYSCALL(136, sys_ustat) __SYSCALL(137, sys_statfs) __SYSCALL(138, sys_fstatfs) __SYSCALL(139, sys_sysfs) __SYSCALL(140, sys_getpriority) __SYSCALL(141, sys_setpriority) __SYSCALL(142, sys_sched_setparam) __SYSCALL(143, sys_sched_getparam) __SYSCALL(144, sys_sched_setscheduler) __SYSCALL(145, sys_sched_getscheduler) __SYSCALL(146, sys_sched_get_priority_max) __SYSCALL(147, sys_sched_get_priority_min) __SYSCALL(148, sys_sched_rr_get_interval) __SYSCALL(149, sys_mlock) __SYSCALL(150, sys_munlock) __SYSCALL(151, sys_mlockall) __SYSCALL(152, sys_munlockall) __SYSCALL(153, sys_vhangup) __SYSCALL(154, sys_modify_ldt) __SYSCALL(155, sys_pivot_root) __SYSCALL(156, sys_ni_syscall) __SYSCALL(157, sys_prctl) __SYSCALL(158, sys_arch_prctl) __SYSCALL(159, sys_adjtimex) __SYSCALL(160, sys_setrlimit) __SYSCALL(161, sys_chroot) __SYSCALL(162, sys_sync) __SYSCALL(163, sys_acct) __SYSCALL(164, sys_settimeofday) __SYSCALL(165, sys_mount) __SYSCALL(166, sys_umount) __SYSCALL(167, sys_swapon) __SYSCALL(168, sys_swapoff) __SYSCALL(169, sys_reboot) __SYSCALL(170, sys_sethostname) __SYSCALL(171, sys_setdomainname) __SYSCALL(172, sys_iopl) __SYSCALL(173, sys_ioperm) __SYSCALL(174, sys_ni_syscall) __SYSCALL(175, sys_init_module) __SYSCALL(176, sys_delete_module) __SYSCALL(177, sys_ni_syscall) __SYSCALL(178, sys_ni_syscall) __SYSCALL(179, sys_quotactl) __SYSCALL(180, sys_ni_syscall) __SYSCALL(181, sys_ni_syscall) __SYSCALL(182, sys_ni_syscall) __SYSCALL(183, sys_ni_syscall) __SYSCALL(184, sys_ni_syscall) __SYSCALL(185, sys_ni_syscall) __SYSCALL(186, sys_gettid) __SYSCALL(187, sys_readahead) __SYSCALL(188, sys_setxattr) __SYSCALL(189, sys_lsetxattr) __SYSCALL(190, sys_fsetxattr) __SYSCALL(191, sys_getxattr) __SYSCALL(192, sys_lgetxattr) __SYSCALL(193, sys_fgetxattr) __SYSCALL(194, sys_listxattr) __SYSCALL(195, sys_llistxattr) __SYSCALL(196, sys_flistxattr) __SYSCALL(197, sys_removexattr) __SYSCALL(198, sys_lremovexattr) __SYSCALL(199, sys_fremovexattr) __SYSCALL(200, sys_tkill) __SYSCALL(201, sys_time) __SYSCALL(202, sys_futex) __SYSCALL(203, sys_sched_setaffinity) __SYSCALL(204, sys_sched_getaffinity) __SYSCALL(205, sys_ni_syscall) __SYSCALL(206, sys_io_setup) __SYSCALL(207, sys_io_destroy) __SYSCALL(208, sys_io_getevents) __SYSCALL(209, sys_io_submit) __SYSCALL(210, sys_io_cancel) __SYSCALL(211, sys_ni_syscall) __SYSCALL(212, sys_lookup_dcookie) __SYSCALL(213, sys_epoll_create) __SYSCALL(214, sys_ni_syscall) __SYSCALL(215, sys_ni_syscall) __SYSCALL(216, sys_remap_file_pages) __SYSCALL(217, sys_getdents64) __SYSCALL(218, sys_set_tid_address) __SYSCALL(219, sys_restart_syscall) __SYSCALL(220, sys_semtimedop) __SYSCALL(221, sys_fadvise64) __SYSCALL(222, sys_timer_create) __SYSCALL(223, sys_timer_settime) __SYSCALL(224, sys_timer_gettime) __SYSCALL(225, sys_timer_getoverrun) __SYSCALL(226, sys_timer_delete) __SYSCALL(227, sys_clock_settime) __SYSCALL(228, sys_clock_gettime) __SYSCALL(229, sys_clock_getres) __SYSCALL(230, sys_clock_nanosleep) __SYSCALL(231, sys_exit_group) __SYSCALL(232, sys_epoll_wait) __SYSCALL(233, sys_epoll_ctl) __SYSCALL(234, sys_tgkill) __SYSCALL(235, sys_utimes) __SYSCALL(236, sys_ni_syscall) __SYSCALL(237, sys_mbind) __SYSCALL(238, sys_set_mempolicy) __SYSCALL(239, sys_get_mempolicy) __SYSCALL(240, sys_mq_open) __SYSCALL(241, sys_mq_unlink) __SYSCALL(242, sys_mq_timedsend) __SYSCALL(243, sys_mq_timedreceive) __SYSCALL(244, sys_mq_notify) __SYSCALL(245, sys_mq_getsetattr) __SYSCALL(246, sys_kexec_load) __SYSCALL(247, sys_waitid) __SYSCALL(248, sys_add_key) __SYSCALL(249, sys_request_key) __SYSCALL(250, sys_keyctl) __SYSCALL(251, sys_ioprio_set) __SYSCALL(252, sys_ioprio_get) __SYSCALL(253, sys_inotify_init) __SYSCALL(254, sys_inotify_add_watch) __SYSCALL(255, sys_inotify_rm_watch) __SYSCALL(256, sys_migrate_pages) __SYSCALL(257, sys_openat) __SYSCALL(258, sys_mkdirat) __SYSCALL(259, sys_mknodat) __SYSCALL(260, sys_fchownat) __SYSCALL(261, sys_futimesat) __SYSCALL(262, sys_newfstatat) __SYSCALL(263, sys_unlinkat) __SYSCALL(264, sys_renameat) __SYSCALL(265, sys_linkat) __SYSCALL(266, sys_symlinkat) __SYSCALL(267, sys_readlinkat) __SYSCALL(268, sys_fchmodat) __SYSCALL(269, sys_faccessat) __SYSCALL(270, sys_pselect6) __SYSCALL(271, sys_ppoll) __SYSCALL(272, sys_unshare) __SYSCALL(273, sys_set_robust_list) __SYSCALL(274, sys_get_robust_list) __SYSCALL(275, sys_splice) __SYSCALL(276, sys_tee) __SYSCALL(277, sys_sync_file_range) __SYSCALL(278, sys_vmsplice) __SYSCALL(279, sys_move_pages) __SYSCALL(280, sys_utimensat) __SYSCALL(281, sys_epoll_pwait) __SYSCALL(282, sys_signalfd) __SYSCALL(283, sys_timerfd_create) __SYSCALL(284, sys_eventfd) __SYSCALL(285, sys_fallocate) __SYSCALL(286, sys_timerfd_settime) __SYSCALL(287, sys_timerfd_gettime) __SYSCALL(288, sys_accept4) __SYSCALL(289, sys_signalfd4) __SYSCALL(290, sys_eventfd2) __SYSCALL(291, sys_epoll_create1) __SYSCALL(292, sys_dup3) __SYSCALL(293, sys_pipe2) __SYSCALL(294, sys_inotify_init1) __SYSCALL(295, sys_preadv) __SYSCALL(296, sys_pwritev) __SYSCALL(297, sys_rt_tgsigqueueinfo) __SYSCALL(298, sys_perf_event_open) __SYSCALL(299, sys_recvmmsg) __SYSCALL(300, sys_fanotify_init) __SYSCALL(301, sys_fanotify_mark) __SYSCALL(302, sys_prlimit64) __SYSCALL(303, sys_name_to_handle_at) __SYSCALL(304, sys_open_by_handle_at) __SYSCALL(305, sys_clock_adjtime) __SYSCALL(306, sys_syncfs) __SYSCALL(307, sys_sendmmsg) __SYSCALL(308, sys_setns) __SYSCALL(309, sys_getcpu) __SYSCALL(310, sys_process_vm_readv) __SYSCALL(311, sys_process_vm_writev) __SYSCALL(312, sys_kcmp) __SYSCALL(313, sys_finit_module) __SYSCALL(314, sys_sched_setattr) __SYSCALL(315, sys_sched_getattr) __SYSCALL(316, sys_renameat2) __SYSCALL(317, sys_seccomp) __SYSCALL(318, sys_getrandom) __SYSCALL(319, sys_memfd_create) __SYSCALL(320, sys_kexec_file_load) __SYSCALL(321, sys_bpf) __SYSCALL(322, sys_execveat) __SYSCALL(323, sys_userfaultfd) __SYSCALL(324, sys_membarrier) __SYSCALL(325, sys_mlock2) __SYSCALL(326, sys_copy_file_range) __SYSCALL(327, sys_preadv2) __SYSCALL(328, sys_pwritev2) __SYSCALL(329, sys_pkey_mprotect) __SYSCALL(330, sys_pkey_alloc) __SYSCALL(331, sys_pkey_free) __SYSCALL(332, sys_statx) __SYSCALL(333, sys_io_pgetevents) __SYSCALL(334, sys_rseq) __SYSCALL(335, sys_ni_syscall) __SYSCALL(336, sys_ni_syscall) __SYSCALL(337, sys_ni_syscall) __SYSCALL(338, sys_ni_syscall) __SYSCALL(339, sys_ni_syscall) __SYSCALL(340, sys_ni_syscall) __SYSCALL(341, sys_ni_syscall) __SYSCALL(342, sys_ni_syscall) __SYSCALL(343, sys_ni_syscall) __SYSCALL(344, sys_ni_syscall) __SYSCALL(345, sys_ni_syscall) __SYSCALL(346, sys_ni_syscall) __SYSCALL(347, sys_ni_syscall) __SYSCALL(348, sys_ni_syscall) __SYSCALL(349, sys_ni_syscall) __SYSCALL(350, sys_ni_syscall) __SYSCALL(351, sys_ni_syscall) __SYSCALL(352, sys_ni_syscall) __SYSCALL(353, sys_ni_syscall) __SYSCALL(354, sys_ni_syscall) __SYSCALL(355, sys_ni_syscall) __SYSCALL(356, sys_ni_syscall) __SYSCALL(357, sys_ni_syscall) __SYSCALL(358, sys_ni_syscall) __SYSCALL(359, sys_ni_syscall) __SYSCALL(360, sys_ni_syscall) __SYSCALL(361, sys_ni_syscall) __SYSCALL(362, sys_ni_syscall) __SYSCALL(363, sys_ni_syscall) __SYSCALL(364, sys_ni_syscall) __SYSCALL(365, sys_ni_syscall) __SYSCALL(366, sys_ni_syscall) __SYSCALL(367, sys_ni_syscall) __SYSCALL(368, sys_ni_syscall) __SYSCALL(369, sys_ni_syscall) __SYSCALL(370, sys_ni_syscall) __SYSCALL(371, sys_ni_syscall) __SYSCALL(372, sys_ni_syscall) __SYSCALL(373, sys_ni_syscall) __SYSCALL(374, sys_ni_syscall) __SYSCALL(375, sys_ni_syscall) __SYSCALL(376, sys_ni_syscall) __SYSCALL(377, sys_ni_syscall) __SYSCALL(378, sys_ni_syscall) __SYSCALL(379, sys_ni_syscall) __SYSCALL(380, sys_ni_syscall) __SYSCALL(381, sys_ni_syscall) __SYSCALL(382, sys_ni_syscall) __SYSCALL(383, sys_ni_syscall) __SYSCALL(384, sys_ni_syscall) __SYSCALL(385, sys_ni_syscall) __SYSCALL(386, sys_ni_syscall) __SYSCALL(387, sys_ni_syscall) __SYSCALL(388, sys_ni_syscall) __SYSCALL(389, sys_ni_syscall) __SYSCALL(390, sys_ni_syscall) __SYSCALL(391, sys_ni_syscall) __SYSCALL(392, sys_ni_syscall) __SYSCALL(393, sys_ni_syscall) __SYSCALL(394, sys_ni_syscall) __SYSCALL(395, sys_ni_syscall) __SYSCALL(396, sys_ni_syscall) __SYSCALL(397, sys_ni_syscall) __SYSCALL(398, sys_ni_syscall) __SYSCALL(399, sys_ni_syscall) __SYSCALL(400, sys_ni_syscall) __SYSCALL(401, sys_ni_syscall) __SYSCALL(402, sys_ni_syscall) __SYSCALL(403, sys_ni_syscall) __SYSCALL(404, sys_ni_syscall) __SYSCALL(405, sys_ni_syscall) __SYSCALL(406, sys_ni_syscall) __SYSCALL(407, sys_ni_syscall) __SYSCALL(408, sys_ni_syscall) __SYSCALL(409, sys_ni_syscall) __SYSCALL(410, sys_ni_syscall) __SYSCALL(411, sys_ni_syscall) __SYSCALL(412, sys_ni_syscall) __SYSCALL(413, sys_ni_syscall) __SYSCALL(414, sys_ni_syscall) __SYSCALL(415, sys_ni_syscall) __SYSCALL(416, sys_ni_syscall) __SYSCALL(417, sys_ni_syscall) __SYSCALL(418, sys_ni_syscall) __SYSCALL(419, sys_ni_syscall) __SYSCALL(420, sys_ni_syscall) __SYSCALL(421, sys_ni_syscall) __SYSCALL(422, sys_ni_syscall) __SYSCALL(423, sys_ni_syscall) __SYSCALL(424, sys_pidfd_send_signal) __SYSCALL(425, sys_io_uring_setup) __SYSCALL(426, sys_io_uring_enter) __SYSCALL(427, sys_io_uring_register) __SYSCALL(428, sys_open_tree) __SYSCALL(429, sys_move_mount) __SYSCALL(430, sys_fsopen) __SYSCALL(431, sys_fsconfig) __SYSCALL(432, sys_fsmount) __SYSCALL(433, sys_fspick) __SYSCALL(434, sys_pidfd_open) __SYSCALL(435, sys_clone3) __SYSCALL(436, sys_close_range) __SYSCALL(437, sys_openat2) __SYSCALL(438, sys_pidfd_getfd) __SYSCALL(439, sys_faccessat2) __SYSCALL(440, sys_process_madvise) __SYSCALL(441, sys_epoll_pwait2) __SYSCALL(442, sys_mount_setattr) __SYSCALL(443, sys_quotactl_fd) __SYSCALL(444, sys_landlock_create_ruleset) __SYSCALL(445, sys_landlock_add_rule) __SYSCALL(446, sys_landlock_restrict_self) __SYSCALL(447, sys_memfd_secret) __SYSCALL(448, sys_process_mrelease) PK ! 9��t"