1*c9274b6bSCho, Yu-Chen /* 2*c9274b6bSCho, Yu-Chen * TOD (Time Of Day) clock 3*c9274b6bSCho, Yu-Chen * 4*c9274b6bSCho, Yu-Chen * Copyright 2018 Red Hat, Inc. 5*c9274b6bSCho, Yu-Chen * Author(s): David Hildenbrand <david@redhat.com> 6*c9274b6bSCho, Yu-Chen * 7*c9274b6bSCho, Yu-Chen * This work is licensed under the terms of the GNU GPL, version 2 or later. 8*c9274b6bSCho, Yu-Chen * See the COPYING file in the top-level directory. 9*c9274b6bSCho, Yu-Chen */ 10*c9274b6bSCho, Yu-Chen 11*c9274b6bSCho, Yu-Chen #ifndef TARGET_S390_TOD_H 12*c9274b6bSCho, Yu-Chen #define TARGET_S390_TOD_H 13*c9274b6bSCho, Yu-Chen 14*c9274b6bSCho, Yu-Chen /* The value of the TOD clock for 1.1.1970. */ 15*c9274b6bSCho, Yu-Chen #define TOD_UNIX_EPOCH 0x7d91048bca000000ULL 16*c9274b6bSCho, Yu-Chen 17*c9274b6bSCho, Yu-Chen /* Converts ns to s390's clock format */ 18*c9274b6bSCho, Yu-Chen static inline uint64_t time2tod(uint64_t ns) 19*c9274b6bSCho, Yu-Chen { 20*c9274b6bSCho, Yu-Chen return (ns << 9) / 125 + (((ns & 0xff80000000000000ull) / 125) << 9); 21*c9274b6bSCho, Yu-Chen } 22*c9274b6bSCho, Yu-Chen 23*c9274b6bSCho, Yu-Chen /* Converts s390's clock format to ns */ 24*c9274b6bSCho, Yu-Chen static inline uint64_t tod2time(uint64_t t) 25*c9274b6bSCho, Yu-Chen { 26*c9274b6bSCho, Yu-Chen return ((t >> 9) * 125) + (((t & 0x1ff) * 125) >> 9); 27*c9274b6bSCho, Yu-Chen } 28*c9274b6bSCho, Yu-Chen 29*c9274b6bSCho, Yu-Chen #endif 30