11fb3e5cdSJason J. Herne /* 21fb3e5cdSJason J. Herne * Helper Functions 31fb3e5cdSJason J. Herne * 41fb3e5cdSJason J. Herne * Copyright (c) 2019 IBM Corp. 51fb3e5cdSJason J. Herne * 61fb3e5cdSJason J. Herne * Author(s): Jason J. Herne <jjherne@us.ibm.com> 71fb3e5cdSJason J. Herne * 81fb3e5cdSJason J. Herne * This work is licensed under the terms of the GNU GPL, version 2 or (at 91fb3e5cdSJason J. Herne * your option) any later version. See the COPYING file in the top-level 101fb3e5cdSJason J. Herne * directory. 111fb3e5cdSJason J. Herne */ 121fb3e5cdSJason J. Herne 131fb3e5cdSJason J. Herne #ifndef S390_CCW_HELPER_H 141fb3e5cdSJason J. Herne #define S390_CCW_HELPER_H 151fb3e5cdSJason J. Herne 161fb3e5cdSJason J. Herne #include "s390-ccw.h" 1712ea90dbSJanosch Frank #include "s390-time.h" 181fb3e5cdSJason J. Herne 191fb3e5cdSJason J. Herne /* Avoids compiler warnings when casting a pointer to a u32 */ ptr2u32(void * ptr)201fb3e5cdSJason J. Hernestatic inline uint32_t ptr2u32(void *ptr) 211fb3e5cdSJason J. Herne { 229598c227SJanosch Frank IPL_assert((uint64_t)ptr <= 0xffffffffull, "ptr2u32: ptr too large"); 231fb3e5cdSJason J. Herne return (uint32_t)(uint64_t)ptr; 241fb3e5cdSJason J. Herne } 251fb3e5cdSJason J. Herne 261fb3e5cdSJason J. Herne /* Avoids compiler warnings when casting a u32 to a pointer */ u32toptr(uint32_t n)271fb3e5cdSJason J. Hernestatic inline void *u32toptr(uint32_t n) 281fb3e5cdSJason J. Herne { 291fb3e5cdSJason J. Herne return (void *)(uint64_t)n; 301fb3e5cdSJason J. Herne } 311fb3e5cdSJason J. Herne yield(void)3212ea90dbSJanosch Frankstatic inline void yield(void) 3312ea90dbSJanosch Frank { 34052b66e7SThomas Huth asm volatile ("diag %%r0,%%r0,0x44" 3512ea90dbSJanosch Frank : : 3612ea90dbSJanosch Frank : "memory", "cc"); 3712ea90dbSJanosch Frank } 3812ea90dbSJanosch Frank sleep(unsigned int seconds)3912ea90dbSJanosch Frankstatic inline void sleep(unsigned int seconds) 4012ea90dbSJanosch Frank { 41*f7f2f96fSJuan Quintela unsigned long target = get_time_seconds() + seconds; 4212ea90dbSJanosch Frank 4312ea90dbSJanosch Frank while (get_time_seconds() < target) { 4412ea90dbSJanosch Frank yield(); 4512ea90dbSJanosch Frank } 4612ea90dbSJanosch Frank } 4712ea90dbSJanosch Frank 481fb3e5cdSJason J. Herne #endif 49