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

hostdep.h (880B)


      1/*
      2 * hostdep.h : things which are dependent on the host architecture
      3 *
      4 * This work is licensed under the terms of the GNU GPL, version 2 or later.
      5 * See the COPYING file in the top-level directory.
      6 */
      7
      8#ifndef RISCV64_HOSTDEP_H
      9#define RISCV64_HOSTDEP_H
     10
     11/* We have a safe-syscall.inc.S */
     12#define HAVE_SAFE_SYSCALL
     13
     14#ifndef __ASSEMBLER__
     15
     16/* These are defined by the safe-syscall.inc.S file */
     17extern char safe_syscall_start[];
     18extern char safe_syscall_end[];
     19
     20/* Adjust the signal context to rewind out of safe-syscall if we're in it */
     21static inline void rewind_if_in_safe_syscall(void *puc)
     22{
     23    ucontext_t *uc = puc;
     24    unsigned long *pcreg = &uc->uc_mcontext.__gregs[REG_PC];
     25
     26    if (*pcreg > (uintptr_t)safe_syscall_start
     27        && *pcreg < (uintptr_t)safe_syscall_end) {
     28        *pcreg = (uintptr_t)safe_syscall_start;
     29    }
     30}
     31
     32#endif /* __ASSEMBLER__ */
     33
     34#endif