typedef struct
{
  unsigned long long pte;
} pte_t;
pte_t mk_swap_pte (unsigned long offset)
{
  pte_t pte;
  pte.pte = (offset << 40);
  return pte;
}
int pte_file (pte_t pte)
{
  return pte.pte & (1 << 4);
}
typedef struct
{
  unsigned long val;
} swp_entry_t;
pte_t swp_entry_to_pte (swp_entry_t entry)
{
  swp_entry_t arch_entry;
  arch_entry = (swp_entry_t){mk_swap_pte (swp_offset (entry)).pte};
  __BUG_ON ((unsigned long) pte_file ((pte_t) {arch_entry.val}));
  return (pte_t) {arch_entry.val};
}
