aboutsummaryrefslogtreecommitdiff
path: root/pc-bios/s390-ccw/helper.h
diff options
context:
space:
mode:
Diffstat (limited to 'pc-bios/s390-ccw/helper.h')
-rw-r--r--pc-bios/s390-ccw/helper.h17
1 files changed, 17 insertions, 0 deletions
diff --git a/pc-bios/s390-ccw/helper.h b/pc-bios/s390-ccw/helper.h
index 78d5bc7442..32a453b634 100644
--- a/pc-bios/s390-ccw/helper.h
+++ b/pc-bios/s390-ccw/helper.h
@@ -14,6 +14,7 @@
#define S390_CCW_HELPER_H
#include "s390-ccw.h"
+#include "s390-time.h"
/* Avoids compiler warnings when casting a pointer to a u32 */
static inline uint32_t ptr2u32(void *ptr)
@@ -28,4 +29,20 @@ static inline void *u32toptr(uint32_t n)
return (void *)(uint64_t)n;
}
+static inline void yield(void)
+{
+ asm volatile ("diag 0,0,0x44"
+ : :
+ : "memory", "cc");
+}
+
+static inline void sleep(unsigned int seconds)
+{
+ ulong target = get_time_seconds() + seconds;
+
+ while (get_time_seconds() < target) {
+ yield();
+ }
+}
+
#endif