On Wed, 31 Jul 2013 00:41:56 +0400 Cyrill Gorcunov <gorcu...@gmail.com> wrote:

> +#define pte_to_pgoff(pte)                                            \
> +     ((((pte).pte_low >> (PTE_FILE_SHIFT1))                          \
> +       & ((1U << PTE_FILE_BITS1) - 1)))                              \
> +     + ((((pte).pte_low >> (PTE_FILE_SHIFT2))                        \
> +         & ((1U << PTE_FILE_BITS2) - 1))                             \
> +        << (PTE_FILE_BITS1))                                         \
> +     + ((((pte).pte_low >> (PTE_FILE_SHIFT3))                        \
> +         & ((1U << PTE_FILE_BITS3) - 1))                             \
> +        << (PTE_FILE_BITS1 + PTE_FILE_BITS2))                        \
> +     + ((((pte).pte_low >> (PTE_FILE_SHIFT4)))                       \
> +         << (PTE_FILE_BITS1 + PTE_FILE_BITS2 + PTE_FILE_BITS3))
> +
> +#define pgoff_to_pte(off)                                            \
> +     ((pte_t) { .pte_low =                                           \
> +      ((((off)) & ((1U << PTE_FILE_BITS1) - 1)) << PTE_FILE_SHIFT1)  \
> +      + ((((off) >> PTE_FILE_BITS1)                                  \
> +          & ((1U << PTE_FILE_BITS2) - 1))                            \
> +         << PTE_FILE_SHIFT2)                                         \
> +      + ((((off) >> (PTE_FILE_BITS1 + PTE_FILE_BITS2))               \
> +          & ((1U << PTE_FILE_BITS3) - 1))                            \
> +         << PTE_FILE_SHIFT3)                                         \
> +      + ((((off) >>                                                  \
> +           (PTE_FILE_BITS1 + PTE_FILE_BITS2 + PTE_FILE_BITS3)))      \
> +         << PTE_FILE_SHIFT4)                                         \
> +      + _PAGE_FILE })

Good god.

I wonder if these can be turned into out-of-line functions in some form
which humans can understand.

or

#define pte_to_pgoff(pte)
        frob(pte, PTE_FILE_SHIFT1, PTE_FILE_BITS1) +
        frob(PTE_FILE_SHIFT2, PTE_FILE_BITS2) +
        frob(PTE_FILE_SHIFT3, PTE_FILE_BITS3) +
        frob(PTE_FILE_SHIFT4, PTE_FILE_BITS1 + PTE_FILE_BITS2 + PTE_FILE_BITS3)


--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Reply via email to