2016-03-03 13:28+0100, Laurent Vivier: > By starting with get-time-of-day, set-time-of-day. > > Signed-off-by: Laurent Vivier <lvivier@xxxxxxxxxx> > --- > diff --git a/powerpc/rtas.c b/powerpc/rtas.c > +#define DAYS(y,m,d) (365UL * (y) + ((y) / 4) - ((y) / 100) + ((y) / 400) + \ > + 367UL * (m) / 12 + \ > + (d)) This function is hard to (re)use. What about putting the "month -= 2" block together with DAYS to give a better estimate of the amount of days in the gregorian calendar? static inline unsigned long days(int year, int month, int day) { month -= 2; if (month <= 0) { month += 12; year -= 1; } return DAYS(year, month, day); } (Or replacing it with an obvious, but slower/bigger implementation? :]) > + /* Put February at end of the year to avoid leap day this year */ > + > + month -= 2; > + if (month <= 0) { > + month += 12; > + year -= 1; > + } > + > + /* compute epoch: substract DAYS(since_March(1-1-1970)) */ > + > + epoch = DAYS(year, month, day) - DAYS(1969, 11, 1); You'd then be able to write epoch = days(year, month, day) - days(1970, 1, 1); instead of the obscure chunk of code. -- To unsubscribe from this list: send the line "unsubscribe kvm" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html