Geert,
On Tue, Jun 5, 2012 at 10:43 PM, Geert Uytterhoeven
<geert@xxxxxxxxxxxxxx> wrote:
On Thu, May 24, 2012 at 2:53 AM, Michael Schmitz
<schmitz@xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx> wrote:
+#if defined(CONFIG_M68000) || defined(CONFIG_COLDFIRE)
+/*
+ * The simpler m68k and ColdFire processors do not have a 32*32->64
+ * multiply instruction. So we need to handle them a little differently.
+ * We use a bit of shifting and a single 32*32->32 multiply to get close.
+ * This is a macro so that the const version can factor out the first
+ * multiply and shift.
+ */
+#define HZSCALE (268435456 / (1000000 / HZ))
+
+#define ndelay(n) __delay( DIV_ROUND_UP( (n) * ((((HZSCALE) >> 11) * (loops_per_jiffy >> 11)) >> 6), 1000 ) );
+
+#endif
Why do you need this? CONFIG_M68000 and CONFIG_COLDFIRE are not set?
CONFIG_M68000 is not set? I thought it's always set ... I was trying
to get the most generic implementation possible before using optimized
ones.
You end up using the default implementation in include/linux/delay.h.
Meaning a true ndelay is not really needed at all - seems to work fine
without. I'll rework that and see if it improves anything. If not, it
can be dropped.
Cheers,
Michael
--
To unsubscribe from this list: send the line "unsubscribe linux-m68k" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html