On Wednesday, July 16, 2014 04:58:00 PM Lv Zheng wrote: > This patch adds default 64-bit mathematics in aclinux.h using do_div(). As > do_div() can be used for all Linux architectures, this can also be used as > stub macros for ACPICA 64-bit mathematics. > > But this is not a performance friendly way, as ACPICA's architecture > specific division OSL only requires a dividing 64-bit number with a 32-bit > number implementation, while Linux __div64_32() is not available for all > build environments. So currently, if an architecture really wants to > support ACPICA, it must implement its own division OSL. What does this mean for i386, in particular? > This is required by the ACPICA header stub support. ACPICA header stubs are > useful to protect CONFIG_ACPI=n Linux kernel builds where ACPICA headers > are included. Lv Zheng. > > Signed-off-by: Lv Zheng <lv.zheng@xxxxxxxxx> > --- > include/acpi/platform/aclinuxex.h | 22 ++++++++++++++++++++++ > 1 file changed, 22 insertions(+) > > diff --git a/include/acpi/platform/aclinuxex.h b/include/acpi/platform/aclinuxex.h > index 191e741..568d4b8 100644 > --- a/include/acpi/platform/aclinuxex.h > +++ b/include/acpi/platform/aclinuxex.h > @@ -46,6 +46,28 @@ > > #ifdef __KERNEL__ > > +#ifndef ACPI_USE_NATIVE_DIVIDE > + > +#ifndef ACPI_DIV_64_BY_32 > +#define ACPI_DIV_64_BY_32(n_hi, n_lo, d32, q32, r32) \ > + do { \ > + u64 (__n) = ((u64) n_hi) << 32 | (n_lo); \ > + (r32) = do_div ((__n), (d32)); \ > + (q32) = (u32) (__n); \ > + } while (0) > +#endif > + > +#ifndef ACPI_SHIFT_RIGHT_64 > +#define ACPI_SHIFT_RIGHT_64(n_hi, n_lo) \ > + do { \ > + (n_lo) >>= 1; \ > + (n_lo) |= (((n_hi) & 1) << 31); \ > + (n_hi) >>= 1; \ > + } while (0) > +#endif > + > +#endif > + > /* > * Overrides for in-kernel ACPICA > */ > -- I speak only for myself. Rafael J. Wysocki, Intel Open Source Technology Center. -- To unsubscribe from this list: send the line "unsubscribe linux-acpi" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html