Source: /cirosantilli/x86-paging/linux-source-tree

= Linux source tree
{c}

In `v4.2`, look under `arch/x86/`:
* `include/asm/pgtable*`
* `include/asm/page*`
* `mm/pgtable*`
* `mm/page*`

There seems to be no structs defined to represent the pages, only macros: `include/asm/page_types.h` is specially interesting. Excerpt:
``
#define _PAGE_BIT_PRESENT   0   /* is present */
#define _PAGE_BIT_RW        1   /* writeable */
#define _PAGE_BIT_USER      2   /* userspace addressable */
#define _PAGE_BIT_PWT       3   /* page write through */
``

`arch/x86/include/uapi/asm/processor-flags.h` defines `CR0`, and in particular the `PG` bit position:
``
#define X86_CR0_PG_BIT      31 /* Paging */
``