cachepc-qemu

Fork of AMDESE/qemu with changes for cachepc side-channel attack
git clone https://git.sinitax.com/sinitax/cachepc-qemu
Log | Files | Refs | Submodules | LICENSE | sfeed.txt

target_os_siginfo.h (4584B)


      1/*
      2 *  FreeBSD siginfo related definitions
      3 *
      4 *  Copyright (c) 2013 Stacey D. Son
      5 *
      6 *  This program is free software; you can redistribute it and/or modify
      7 *  it under the terms of the GNU General Public License as published by
      8 *  the Free Software Foundation; either version 2 of the License, or
      9 *  (at your option) any later version.
     10 *
     11 *  This program is distributed in the hope that it will be useful,
     12 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
     13 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
     14 *  GNU General Public License for more details.
     15 *
     16 *  You should have received a copy of the GNU General Public License
     17 *  along with this program; if not, see <http://www.gnu.org/licenses/>.
     18 */
     19#ifndef _TARGET_OS_SIGINFO_H_
     20#define _TARGET_OS_SIGINFO_H_
     21
     22#define TARGET_NSIG         128
     23#define TARGET_NSIG_BPW     (sizeof(uint32_t) * 8)
     24#define TARGET_NSIG_WORDS   (TARGET_NSIG / TARGET_NSIG_BPW)
     25
     26/* this struct defines a stack used during syscall handling */
     27typedef struct target_sigaltstack {
     28    abi_long    ss_sp;
     29    abi_ulong   ss_size;
     30    abi_long    ss_flags;
     31} target_stack_t;
     32
     33typedef struct {
     34    uint32_t __bits[TARGET_NSIG_WORDS];
     35} target_sigset_t;
     36
     37struct target_sigaction {
     38    abi_ulong   _sa_handler;
     39    int32_t     sa_flags;
     40    target_sigset_t sa_mask;
     41};
     42
     43typedef union target_sigval {
     44    int32_t sival_int;
     45    abi_ulong sival_ptr;
     46    int32_t sigval_int;
     47    abi_ulong sigval_ptr;
     48} target_sigval_t;
     49
     50typedef struct target_siginfo {
     51    int32_t si_signo;   /* signal number */
     52    int32_t si_errno;   /* errno association */
     53    int32_t si_code;    /* signal code */
     54    int32_t si_pid;     /* sending process */
     55    int32_t si_uid;     /* sender's ruid */
     56    int32_t si_status;  /* exit value */
     57    abi_ulong si_addr;  /* faulting instruction */
     58    union target_sigval si_value;   /* signal value */
     59    union {
     60        struct {
     61            int32_t _trapno;    /* machine specific trap code */
     62        } _fault;
     63
     64        /* POSIX.1b timers */
     65        struct {
     66            int32_t _timerid;
     67            int32_t _overrun;
     68        } _timer;
     69
     70        struct {
     71            int32_t _mqd;
     72        } _mesgp;
     73
     74        /* SIGPOLL */
     75        struct {
     76            int _band;  /* POLL_IN, POLL_OUT, POLL_MSG */
     77        } _poll;
     78
     79        struct {
     80            abi_long __spare1__;
     81            int32_t  __spare2_[7];
     82        } __spare__;
     83    } _reason;
     84} target_siginfo_t;
     85
     86struct target_sigevent {
     87    abi_int sigev_notify;
     88    abi_int sigev_signo;
     89    target_sigval_t sigev_value;
     90    union {
     91        abi_int _threadid;
     92
     93        /*
     94         * The kernel (and thus QEMU) never looks at these;
     95         * they're only used as part of the ABI between a
     96         * userspace program and libc.
     97         */
     98        struct {
     99            abi_ulong _function;
    100            abi_ulong _attribute;
    101        } _sigev_thread;
    102        abi_ushort _kevent_flags;
    103        abi_long _pad[8];
    104    } _sigev_un;
    105};
    106
    107#define target_si_signo     si_signo
    108#define target_si_code      si_code
    109#define target_si_errno     si_errno
    110#define target_si_addr      si_addr
    111
    112/* SIGILL si_codes */
    113#define TARGET_ILL_ILLOPC   (1) /* Illegal opcode. */
    114#define TARGET_ILL_ILLOPN   (2) /* Illegal operand. */
    115#define TARGET_ILL_ILLADR   (3) /* Illegal addressing mode. */
    116#define TARGET_ILL_ILLTRP   (4) /* Illegal trap. */
    117#define TARGET_ILL_PRVOPC   (5) /* Privileged opcode. */
    118#define TARGET_ILL_PRVREG   (6) /* Privileged register. */
    119#define TARGET_ILL_COPROC   (7) /* Coprocessor error. */
    120#define TARGET_ILL_BADSTK   (8) /* Internal stack error. */
    121
    122/* SIGSEGV si_codes */
    123#define TARGET_SEGV_MAPERR  (1) /* address not mapped to object */
    124#define TARGET_SEGV_ACCERR  (2) /* invalid permissions for mapped object */
    125
    126/* SIGTRAP si_codes */
    127#define TARGET_TRAP_BRKPT   (1) /* process beakpoint */
    128#define TARGET_TRAP_TRACE   (2) /* process trace trap */
    129
    130/* SIGBUS si_codes */
    131#define TARGET_BUS_ADRALN   (1)
    132#define TARGET_BUS_ADRERR   (2)
    133#define TARGET_BUS_OBJERR   (3)
    134
    135/* SIGFPE codes */
    136#define TARGET_FPE_INTOVF   (1) /* Integer overflow. */
    137#define TARGET_FPE_INTDIV   (2) /* Integer divide by zero. */
    138#define TARGET_FPE_FLTDIV   (3) /* Floating point divide by zero. */
    139#define TARGET_FPE_FLTOVF   (4) /* Floating point overflow. */
    140#define TARGET_FPE_FLTUND   (5) /* Floating point underflow. */
    141#define TARGET_FPE_FLTRES   (6) /* Floating point inexact result. */
    142#define TARGET_FPE_FLTINV   (7) /* Invalid floating point operation. */
    143#define TARGET_FPE_FLTSUB   (8) /* Subscript out of range. */
    144
    145#endif /* !_TARGET_OS_SIGINFO_H_ */