File indexing completed on 2026-01-07 10:24:21
0001
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014
0015
0016
0017
0018
0019
0020
0021
0022
0023
0024
0025
0026
0027
0028
0029 #ifndef __VKI_RISCV64_LINUX_H
0030 #define __VKI_RISCV64_LINUX_H
0031
0032
0033 #define VKI_LITTLE_ENDIAN 1
0034
0035
0036
0037
0038
0039 typedef unsigned char __vki_u8;
0040
0041 typedef __signed__ short __vki_s16;
0042 typedef unsigned short __vki_u16;
0043
0044 typedef __signed__ int __vki_s32;
0045 typedef unsigned int __vki_u32;
0046
0047 typedef __signed__ long long __vki_s64;
0048 typedef unsigned long long __vki_u64;
0049
0050 typedef unsigned short vki_u16;
0051
0052 typedef unsigned int vki_u32;
0053
0054
0055
0056
0057
0058 #define VKI_PAGE_SHIFT (12)
0059 #define VKI_PAGE_SIZE (1UL << VKI_PAGE_SHIFT)
0060 #define VKI_MAX_PAGE_SHIFT VKI_PAGE_SHIFT
0061 #define VKI_MAX_PAGE_SIZE VKI_PAGE_SIZE
0062
0063
0064
0065
0066
0067 #define VKI_SHMLBA VKI_PAGE_SIZE
0068
0069
0070
0071
0072
0073 #define VKI_SIG_BLOCK 0
0074 #define VKI_SIG_UNBLOCK 1
0075 #define VKI_SIG_SETMASK 2
0076
0077 typedef void __vki_signalfn_t(int);
0078 typedef __vki_signalfn_t __user *__vki_sighandler_t;
0079
0080 #define VKI_SIG_DFL ((__vki_sighandler_t)0)
0081 #define VKI_SIG_IGN ((__vki_sighandler_t)1)
0082
0083
0084
0085
0086
0087 #define _VKI_NSIG 64
0088 #define _VKI_NSIG_BPW 64
0089 #define _VKI_NSIG_WORDS (_VKI_NSIG / _VKI_NSIG_BPW)
0090
0091 typedef unsigned long vki_old_sigset_t;
0092
0093 typedef struct {
0094 unsigned long sig[_VKI_NSIG_WORDS];
0095 } vki_sigset_t;
0096
0097 #define VKI_SIGHUP 1
0098 #define VKI_SIGINT 2
0099 #define VKI_SIGQUIT 3
0100 #define VKI_SIGILL 4
0101 #define VKI_SIGTRAP 5
0102 #define VKI_SIGABRT 6
0103 #define VKI_SIGBUS 7
0104 #define VKI_SIGFPE 8
0105 #define VKI_SIGKILL 9
0106 #define VKI_SIGUSR1 10
0107 #define VKI_SIGSEGV 11
0108 #define VKI_SIGUSR2 12
0109 #define VKI_SIGPIPE 13
0110 #define VKI_SIGALRM 14
0111 #define VKI_SIGTERM 15
0112 #define VKI_SIGSTKFLT 16
0113 #define VKI_SIGCHLD 17
0114 #define VKI_SIGCONT 18
0115 #define VKI_SIGSTOP 19
0116 #define VKI_SIGTSTP 20
0117 #define VKI_SIGTTIN 21
0118 #define VKI_SIGTTOU 22
0119 #define VKI_SIGURG 23
0120 #define VKI_SIGXCPU 24
0121 #define VKI_SIGXFSZ 25
0122 #define VKI_SIGVTALRM 26
0123 #define VKI_SIGPROF 27
0124 #define VKI_SIGWINCH 28
0125 #define VKI_SIGIO 29
0126 #define VKI_SIGPWR 30
0127 #define VKI_SIGSYS 31
0128 #define VKI_SIGUNUSED 31
0129
0130 #define VKI_SIGRTMIN 32
0131 #define VKI_SIGRTMAX _VKI_NSIG
0132
0133 #define VKI_SA_NOCLDSTOP 0x00000001
0134 #define VKI_SA_NOCLDWAIT 0x00000002
0135 #define VKI_SA_SIGINFO 0x00000004
0136 #define VKI_SA_ONSTACK 0x08000000
0137 #define VKI_SA_RESTART 0x10000000
0138 #define VKI_SA_NODEFER 0x40000000
0139 #define VKI_SA_RESETHAND 0x80000000
0140
0141 #define VKI_SA_NOMASK VKI_SA_NODEFER
0142 #define VKI_SA_ONESHOT VKI_SA_RESETHAND
0143
0144 #define VKI_MINSIGSTKSZ 2048
0145
0146 struct vki_sigaction_base {
0147 __vki_sighandler_t ksa_handler;
0148 unsigned long sa_flags;
0149 vki_sigset_t sa_mask;
0150 };
0151
0152
0153
0154 typedef struct vki_sigaction_base vki_sigaction_toK_t;
0155 typedef struct vki_sigaction_base vki_sigaction_fromK_t;
0156
0157 typedef struct vki_sigaltstack {
0158 void __user *ss_sp;
0159 int ss_flags;
0160 vki_size_t ss_size;
0161 } vki_stack_t;
0162
0163
0164
0165
0166
0167 #define VKI_SS_ONSTACK 1
0168 #define VKI_SS_DISABLE 2
0169
0170
0171
0172
0173
0174 #define VKI_PROT_READ 0x1
0175 #define VKI_PROT_WRITE 0x2
0176 #define VKI_PROT_EXEC 0x4
0177 #define VKI_PROT_NONE 0x0
0178 #define VKI_PROT_GROWSDOWN 0x01000000
0179 #define VKI_PROT_GROWSUP 0x02000000
0180
0181 #define VKI_MAP_FIXED 0x10
0182 #define VKI_MAP_ANONYMOUS 0x20
0183
0184
0185
0186
0187
0188 #define VKI_MAP_NORESERVE 0x4000
0189
0190
0191
0192
0193
0194 #define VKI_MAP_SHARED 0x01
0195 #define VKI_MAP_PRIVATE 0x02
0196
0197
0198
0199
0200
0201 #define VKI_O_ACCMODE 03
0202 #define VKI_O_RDONLY 00
0203 #define VKI_O_WRONLY 01
0204 #define VKI_O_RDWR 02
0205 #define VKI_O_CREAT 0100
0206 #define VKI_O_EXCL 0200
0207 #define VKI_O_TRUNC 01000
0208 #define VKI_O_APPEND 02000
0209 #define VKI_O_NONBLOCK 04000
0210 #define VKI_O_LARGEFILE 0100000
0211 #define VKI_O_DIRECT 00040000
0212
0213 #define VKI_F_DUPFD 0
0214 #define VKI_F_GETFD 1
0215 #define VKI_F_SETFD 2
0216 #define VKI_F_GETFL 3
0217 #define VKI_F_SETFL 4
0218 #define VKI_F_GETLK 5
0219 #define VKI_F_SETLK 6
0220 #define VKI_F_SETLKW 7
0221
0222 #define VKI_F_SETOWN 8
0223 #define VKI_F_GETOWN 9
0224 #define VKI_F_SETSIG 10
0225 #define VKI_F_GETSIG 11
0226
0227 #define VKI_F_SETOWN_EX 15
0228 #define VKI_F_GETOWN_EX 16
0229
0230 #define VKI_F_OFD_GETLK 36
0231 #define VKI_F_OFD_SETLK 37
0232 #define VKI_F_OFD_SETLKW 38
0233
0234 struct vki_f_owner_ex {
0235 int type;
0236 __vki_kernel_pid_t pid;
0237 };
0238
0239 #define VKI_FD_CLOEXEC 1
0240
0241 #define VKI_F_LINUX_SPECIFIC_BASE 1024
0242
0243
0244
0245
0246
0247 #define VKI_AT_FDCWD -100
0248
0249
0250
0251
0252
0253 #define VKI_RLIMIT_DATA 2
0254 #define VKI_RLIMIT_STACK 3
0255 #define VKI_RLIMIT_CORE 4
0256 #define VKI_RLIMIT_NOFILE 7
0257
0258
0259
0260
0261
0262 #define VKI_SOL_SOCKET 1
0263
0264 #define VKI_SO_TYPE 3
0265
0266 #define VKI_SO_ATTACH_FILTER 26
0267
0268
0269
0270
0271
0272 #define VKI_SIOCSPGRP 0x8902
0273 #define VKI_SIOCGPGRP 0x8904
0274 #define VKI_SIOCATMARK 0x8905
0275 #define VKI_SIOCGSTAMP 0x8906
0276 #define VKI_SIOCGSTAMPNS 0x8907
0277
0278
0279
0280
0281
0282 struct vki_stat {
0283 unsigned long st_dev;
0284 unsigned long st_ino;
0285 unsigned int st_mode;
0286 unsigned int st_nlink;
0287 unsigned int st_uid;
0288 unsigned int st_gid;
0289 unsigned long st_rdev;
0290 unsigned long __pad1;
0291 long st_size;
0292 int st_blksize;
0293 int __pad2;
0294 long st_blocks;
0295 long st_atime;
0296 unsigned long st_atime_nsec;
0297 long st_mtime;
0298 unsigned long st_mtime_nsec;
0299 long st_ctime;
0300 unsigned long st_ctime_nsec;
0301 unsigned int __unused4;
0302 unsigned int __unused5;
0303 };
0304
0305
0306
0307
0308
0309 struct vki_statfs {
0310 long f_type;
0311 long f_bsize;
0312 long f_blocks;
0313 long f_bfree;
0314 long f_bavail;
0315 long f_files;
0316 long f_ffree;
0317 __vki_kernel_fsid_t f_fsid;
0318 long f_namelen;
0319 long f_frsize;
0320 long f_flags;
0321 long f_spare[4];
0322 };
0323
0324
0325
0326
0327
0328 struct vki_winsize {
0329 unsigned short ws_row;
0330 unsigned short ws_col;
0331 unsigned short ws_xpixel;
0332 unsigned short ws_ypixel;
0333 };
0334
0335 #define VKI_NCC 8
0336 struct vki_termio {
0337 unsigned short c_iflag;
0338 unsigned short c_oflag;
0339 unsigned short c_cflag;
0340 unsigned short c_lflag;
0341 unsigned char c_line;
0342 unsigned char c_cc[VKI_NCC];
0343 };
0344
0345
0346
0347
0348
0349 typedef unsigned char vki_cc_t;
0350 typedef unsigned int vki_tcflag_t;
0351
0352 #define VKI_NCCS 19
0353 struct vki_termios {
0354 vki_tcflag_t c_iflag;
0355 vki_tcflag_t c_oflag;
0356 vki_tcflag_t c_cflag;
0357 vki_tcflag_t c_lflag;
0358 vki_cc_t c_line;
0359 vki_cc_t c_cc[VKI_NCCS];
0360 };
0361
0362
0363
0364
0365
0366 #define _VKI_IOC_NRBITS 8
0367 #define _VKI_IOC_TYPEBITS 8
0368 #define _VKI_IOC_SIZEBITS 14
0369 #define _VKI_IOC_DIRBITS 2
0370
0371 #define _VKI_IOC_SIZEMASK ((1 << _VKI_IOC_SIZEBITS)-1)
0372 #define _VKI_IOC_DIRMASK ((1 << _VKI_IOC_DIRBITS)-1)
0373
0374 #define _VKI_IOC_NRSHIFT 0
0375 #define _VKI_IOC_TYPESHIFT (_VKI_IOC_NRSHIFT+_VKI_IOC_NRBITS)
0376 #define _VKI_IOC_SIZESHIFT (_VKI_IOC_TYPESHIFT+_VKI_IOC_TYPEBITS)
0377 #define _VKI_IOC_DIRSHIFT (_VKI_IOC_SIZESHIFT+_VKI_IOC_SIZEBITS)
0378
0379 #define _VKI_IOC_NONE 0U
0380 #define _VKI_IOC_WRITE 1U
0381 #define _VKI_IOC_READ 2U
0382
0383 #define _VKI_IOC(dir,type,nr,size) \
0384 (((dir) << _VKI_IOC_DIRSHIFT) | \
0385 ((type) << _VKI_IOC_TYPESHIFT) | \
0386 ((nr) << _VKI_IOC_NRSHIFT) | \
0387 ((size) << _VKI_IOC_SIZESHIFT))
0388
0389 #define _VKI_IO(type,nr) _VKI_IOC(_VKI_IOC_NONE,(type),(nr),0)
0390 #define _VKI_IOR(type,nr,size) _VKI_IOC(_VKI_IOC_READ,(type),(nr),sizeof(size))
0391 #define _VKI_IOW(type,nr,size) _VKI_IOC(_VKI_IOC_WRITE,(type),(nr),sizeof(size))
0392 #define _VKI_IOWR(type,nr,size) _VKI_IOC(_VKI_IOC_READ|_VKI_IOC_WRITE,(type),(nr),sizeof(size))
0393
0394 #define _VKI_IOC_DIR(nr) (((nr) >> _VKI_IOC_DIRSHIFT) & _VKI_IOC_DIRMASK)
0395 #define _VKI_IOC_SIZE(nr) (((nr) >> _VKI_IOC_SIZESHIFT) & _VKI_IOC_SIZEMASK)
0396
0397
0398
0399
0400
0401 #define VKI_TCGETS 0x5401
0402 #define VKI_TCSETS 0x5402
0403 #define VKI_TCSETSW 0x5403
0404 #define VKI_TCSETSF 0x5404
0405 #define VKI_TCGETA 0x5405
0406 #define VKI_TCSETA 0x5406
0407 #define VKI_TCSETAW 0x5407
0408 #define VKI_TCSETAF 0x5408
0409 #define VKI_TCSBRK 0x5409
0410 #define VKI_TCXONC 0x540A
0411 #define VKI_TCFLSH 0x540B
0412 #define VKI_TIOCSCTTY 0x540E
0413 #define VKI_TIOCGPGRP 0x540F
0414 #define VKI_TIOCSPGRP 0x5410
0415 #define VKI_TIOCOUTQ 0x5411
0416 #define VKI_TIOCGWINSZ 0x5413
0417 #define VKI_TIOCSWINSZ 0x5414
0418 #define VKI_TIOCMGET 0x5415
0419 #define VKI_TIOCMBIS 0x5416
0420 #define VKI_TIOCMBIC 0x5417
0421 #define VKI_TIOCMSET 0x5418
0422 #define VKI_FIONREAD 0x541B
0423 #define VKI_TIOCLINUX 0x541C
0424 #define VKI_TIOCGSERIAL 0x541E
0425 #define VKI_TIOCSSERIAL 0x541F
0426 #define VKI_FIONBIO 0x5421
0427 #define VKI_TIOCNOTTY 0x5422
0428 #define VKI_TCSBRKP 0x5425
0429 #define VKI_TIOCGPTN _VKI_IOR('T',0x30, unsigned int)
0430 #define VKI_TIOCSPTLCK _VKI_IOW('T',0x31, int)
0431
0432 #define VKI_FIONCLEX 0x5450
0433 #define VKI_FIOCLEX 0x5451
0434 #define VKI_FIOASYNC 0x5452
0435 #define VKI_TIOCSERGETLSR 0x5459
0436
0437 #define VKI_TIOCGICOUNT 0x545D
0438
0439
0440
0441
0442
0443 #define VKI_POLLIN 0x0001
0444
0445 struct vki_pollfd {
0446 int fd;
0447 short events;
0448 short revents;
0449 };
0450
0451
0452
0453
0454
0455 struct vki_user_regs_struct {
0456 unsigned long pc;
0457 unsigned long ra;
0458 unsigned long sp;
0459 unsigned long gp;
0460 unsigned long tp;
0461 unsigned long t0;
0462 unsigned long t1;
0463 unsigned long t2;
0464 unsigned long s0;
0465 unsigned long s1;
0466 unsigned long a0;
0467 unsigned long a1;
0468 unsigned long a2;
0469 unsigned long a3;
0470 unsigned long a4;
0471 unsigned long a5;
0472 unsigned long a6;
0473 unsigned long a7;
0474 unsigned long s2;
0475 unsigned long s3;
0476 unsigned long s4;
0477 unsigned long s5;
0478 unsigned long s6;
0479 unsigned long s7;
0480 unsigned long s8;
0481 unsigned long s9;
0482 unsigned long s10;
0483 unsigned long s11;
0484 unsigned long t3;
0485 unsigned long t4;
0486 unsigned long t5;
0487 unsigned long t6;
0488 };
0489
0490 struct __vki_riscv_f_ext_state {
0491 __vki_u32 f[32];
0492 __vki_u32 fcsr;
0493 };
0494
0495 struct __vki_riscv_d_ext_state {
0496 __vki_u64 f[32];
0497 __vki_u32 fcsr;
0498 };
0499
0500 struct __vki_riscv_q_ext_state {
0501 __vki_u64 f[64] __attribute__((aligned(16)));
0502 __vki_u32 fcsr;
0503 __vki_u32 reserved[3];
0504 };
0505
0506 union __vki_riscv_fp_state {
0507 struct __vki_riscv_f_ext_state f;
0508 struct __vki_riscv_d_ext_state d;
0509 struct __vki_riscv_q_ext_state q;
0510 };
0511
0512
0513
0514
0515
0516 struct vki_sigcontext {
0517 struct vki_user_regs_struct sc_regs;
0518 union __vki_riscv_fp_state sc_fpregs;
0519 };
0520
0521
0522
0523
0524
0525 typedef unsigned long vki_elf_greg_t;
0526 typedef struct vki_user_regs_struct vki_elf_gregset_t;
0527 #define VKI_ELF_NGREG (sizeof (struct vki_elf_gregset_t) / sizeof(vki_elf_greg_t))
0528
0529 typedef union __vki_riscv_fp_state vki_elf_fpregset_t;
0530
0531
0532
0533
0534
0535 struct vki_ucontext {
0536 unsigned long uc_flags;
0537 struct vki_ucontext *uc_link;
0538 vki_stack_t uc_stack;
0539 vki_sigset_t uc_sigmask;
0540 __vki_u8 __unused[1024 / 8 - sizeof(vki_sigset_t)];
0541 struct vki_sigcontext uc_mcontext;
0542 };
0543
0544 typedef char vki_modify_ldt_t;
0545
0546
0547
0548
0549
0550 struct vki_ipc64_perm {
0551 __vki_kernel_key_t key;
0552 __vki_kernel_uid32_t uid;
0553 __vki_kernel_gid32_t gid;
0554 __vki_kernel_uid32_t cuid;
0555 __vki_kernel_gid32_t cgid;
0556 __vki_kernel_mode_t mode;
0557 unsigned char __pad1[4 - sizeof(__vki_kernel_mode_t)];
0558 unsigned short seq;
0559 unsigned short __pad2;
0560 unsigned long __unused1;
0561 unsigned long __unused2;
0562 };
0563
0564
0565
0566
0567
0568 struct vki_semid64_ds {
0569 struct vki_ipc64_perm sem_perm;
0570 __vki_kernel_time_t sem_otime;
0571 __vki_kernel_time_t sem_ctime;
0572 unsigned long sem_nsems;
0573 unsigned long __unused3;
0574 unsigned long __unused4;
0575 };
0576
0577
0578
0579
0580
0581 struct vki_msqid64_ds {
0582 struct vki_ipc64_perm msg_perm;
0583 __vki_kernel_time_t msg_stime;
0584 __vki_kernel_time_t msg_rtime;
0585 __vki_kernel_time_t msg_ctime;
0586 unsigned long msg_cbytes;
0587 unsigned long msg_qnum;
0588 unsigned long msg_qbytes;
0589 __vki_kernel_pid_t msg_lspid;
0590 __vki_kernel_pid_t msg_lrpid;
0591 unsigned long __unused4;
0592 unsigned long __unused5;
0593 };
0594
0595
0596
0597
0598
0599 struct vki_shmid64_ds {
0600 struct vki_ipc64_perm shm_perm;
0601 vki_size_t shm_segsz;
0602 __vki_kernel_time_t shm_atime;
0603 __vki_kernel_time_t shm_dtime;
0604 __vki_kernel_time_t shm_ctime;
0605 __vki_kernel_pid_t shm_cpid;
0606 __vki_kernel_pid_t shm_lpid;
0607 unsigned long shm_nattch;
0608 unsigned long __unused4;
0609 unsigned long __unused5;
0610 };
0611
0612 struct vki_shminfo64 {
0613 unsigned long shmmax;
0614 unsigned long shmmin;
0615 unsigned long shmmni;
0616 unsigned long shmseg;
0617 unsigned long shmall;
0618 unsigned long __unused1;
0619 unsigned long __unused2;
0620 unsigned long __unused3;
0621 unsigned long __unused4;
0622 };
0623
0624
0625
0626
0627
0628 #define VKI_ENOSYS 38
0629 #define VKI_EOVERFLOW 75
0630
0631 #endif
0632
0633
0634
0635