qemu

FORK: QEMU emulator
git clone https://git.neptards.moe/neptards/qemu.git
Log | Files | Refs | Submodules | LICENSE

helper.h (1049B)


      1 /*
      2  * Helper Functions
      3  *
      4  * Copyright (c) 2019 IBM Corp.
      5  *
      6  * Author(s): Jason J. Herne <jjherne@us.ibm.com>
      7  *
      8  * This work is licensed under the terms of the GNU GPL, version 2 or (at
      9  * your option) any later version. See the COPYING file in the top-level
     10  * directory.
     11  */
     12 
     13 #ifndef S390_CCW_HELPER_H
     14 #define S390_CCW_HELPER_H
     15 
     16 #include "s390-ccw.h"
     17 #include "s390-time.h"
     18 
     19 /* Avoids compiler warnings when casting a pointer to a u32 */
     20 static inline uint32_t ptr2u32(void *ptr)
     21 {
     22     IPL_assert((uint64_t)ptr <= 0xffffffffull, "ptr2u32: ptr too large");
     23     return (uint32_t)(uint64_t)ptr;
     24 }
     25 
     26 /* Avoids compiler warnings when casting a u32 to a pointer */
     27 static inline void *u32toptr(uint32_t n)
     28 {
     29     return (void *)(uint64_t)n;
     30 }
     31 
     32 static inline void yield(void)
     33 {
     34     asm volatile ("diag %%r0,%%r0,0x44"
     35                   : :
     36                   : "memory", "cc");
     37 }
     38 
     39 static inline void sleep(unsigned int seconds)
     40 {
     41     ulong target = get_time_seconds() + seconds;
     42 
     43     while (get_time_seconds() < target) {
     44         yield();
     45     }
     46 }
     47 
     48 #endif