s390/time: introduce union tod_clock
authorHeiko Carstens <hca@linux.ibm.com>
Sun, 7 Feb 2021 21:00:22 +0000 (22:00 +0100)
committerVasily Gorbik <gor@linux.ibm.com>
Sat, 13 Feb 2021 16:17:54 +0000 (17:17 +0100)
Introduce union tod_clock which is supposed to be used to decode and
access various fields of the result of STORE CLOCK EXTENDED.

Signed-off-by: Heiko Carstens <hca@linux.ibm.com>
Signed-off-by: Vasily Gorbik <gor@linux.ibm.com>
arch/s390/include/asm/timex.h

index 63bf3bd..271a1e1 100644 (file)
 
 extern u64 clock_comparator_max;
 
+union tod_clock {
+       __uint128_t val;
+       struct {
+               __uint128_t ei  :  8; /* epoch index */
+               __uint128_t tod : 64; /* bits 0-63 of tod clock */
+               __uint128_t     : 40;
+               __uint128_t pf  : 16; /* programmable field */
+       };
+       struct {
+               __uint128_t eitod : 72; /* epoch index + bits 0-63 tod clock */
+               __uint128_t       : 56;
+       };
+       struct {
+               __uint128_t us  : 60; /* micro-seconds */
+               __uint128_t sus : 12; /* sub-microseconds */
+               __uint128_t     : 56;
+       };
+} __packed;
+
 /* Inline functions for clock register access. */
 static inline int set_tod_clock(__u64 time)
 {