[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [PATCH] x86/vRTC: move and tidy convert_hour() and {to,from}_bcd()
This is to avoid the need for forward declarations, which in turn addresses a violation of MISRA C:2012 Rule 8.3 ("All declarations of an object or function shall use the same names and type qualifiers"). While doing so, - drop inline (leaving the decision to the compiler), - add const, - add unsigned, - correct style. Signed-off-by: Jan Beulich <jbeulich@xxxxxxxx> --- a/xen/arch/x86/hvm/rtc.c +++ b/xen/arch/x86/hvm/rtc.c @@ -58,8 +58,6 @@ enum rtc_mode { static void rtc_copy_date(RTCState *s); static void rtc_set_time(RTCState *s); -static inline int from_bcd(RTCState *s, int a); -static inline int convert_hour(RTCState *s, int hour); static void rtc_update_irq(RTCState *s) { @@ -246,6 +244,40 @@ static void cf_check rtc_update_timer2(v spin_unlock(&s->lock); } +static unsigned int to_bcd(const RTCState *s, unsigned int a) +{ + if ( s->hw.cmos_data[RTC_REG_B] & RTC_DM_BINARY ) + return a; + + return ((a / 10) << 4) | (a % 10); +} + +static unsigned int from_bcd(const RTCState *s, unsigned int a) +{ + if ( s->hw.cmos_data[RTC_REG_B] & RTC_DM_BINARY ) + return a; + + return ((a >> 4) * 10) + (a & 0x0f); +} + +/* + * Hours in 12 hour mode are in 1-12 range, not 0-11. So we need convert it + * before use. + */ +static unsigned int convert_hour(const RTCState *s, unsigned int raw) +{ + unsigned int hour = from_bcd(s, raw & 0x7f); + + if ( !(s->hw.cmos_data[RTC_REG_B] & RTC_24H) ) + { + hour %= 12; + if ( raw & 0x80 ) + hour += 12; + } + + return hour; +} + /* handle alarm timer */ static void alarm_timer_update(RTCState *s) { @@ -541,37 +573,6 @@ static int rtc_ioport_write(void *opaque return 1; } -static inline int to_bcd(RTCState *s, int a) -{ - if ( s->hw.cmos_data[RTC_REG_B] & RTC_DM_BINARY ) - return a; - else - return ((a / 10) << 4) | (a % 10); -} - -static inline int from_bcd(RTCState *s, int a) -{ - if ( s->hw.cmos_data[RTC_REG_B] & RTC_DM_BINARY ) - return a; - else - return ((a >> 4) * 10) + (a & 0x0f); -} - -/* Hours in 12 hour mode are in 1-12 range, not 0-11. - * So we need convert it before using it*/ -static inline int convert_hour(RTCState *s, int raw) -{ - int hour = from_bcd(s, raw & 0x7f); - - if (!(s->hw.cmos_data[RTC_REG_B] & RTC_24H)) - { - hour %= 12; - if (raw & 0x80) - hour += 12; - } - return hour; -} - static void rtc_set_time(RTCState *s) { struct tm *tm = &s->current_tm;
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |