/*
 * linux/arch/unicore32/include/asm/pgtable-hwdef.h
 *
 * Code specific to PKUnity SoC and UniCore ISA
 *
 * Copyright (C) 2001-2010 GUAN Xue-tao
 *
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License version 2 as
 * published by the Free Software Foundation.
 */
#ifndef __UNICORE_PGTABLE_HWDEF_H__
#define __UNICORE_PGTABLE_HWDEF_H__

/*
 * Hardware page table definitions.
 *
 * + Level 1 descriptor (PMD)
 *   - common
 */
#define PMD_TYPE_MASK		(3 << 0)
#define PMD_TYPE_TABLE		(0 << 0)
/*#define PMD_TYPE_LARGE	(1 << 0) */
#define PMD_TYPE_INVALID	(2 << 0)
#define PMD_TYPE_SECT		(3 << 0)

#define PMD_PRESENT		(1 << 2)
#define PMD_YOUNG		(1 << 3)

/*#define PMD_SECT_DIRTY	(1 << 4) */
#define PMD_SECT_CACHEABLE	(1 << 5)
#define PMD_SECT_EXEC		(1 << 6)
#define PMD_SECT_WRITE		(1 << 7)
#define PMD_SECT_READ		(1 << 8)

/*
 * + Level 2 descriptor (PTE)
 *   - common
 */
#define PTE_TYPE_MASK		(3 << 0)
#define PTE_TYPE_SMALL		(0 << 0)
#define PTE_TYPE_MIDDLE		(1 << 0)
#define PTE_TYPE_LARGE		(2 << 0)
#define PTE_TYPE_INVALID	(3 << 0)

#define PTE_PRESENT		(1 << 2)
#define PTE_FILE		(1 << 3)	/* only when !PRESENT */
#define PTE_YOUNG		(1 << 3)
#define PTE_DIRTY		(1 << 4)
#define PTE_CACHEABLE		(1 << 5)
#define PTE_EXEC		(1 << 6)
#define PTE_WRITE		(1 << 7)
#define PTE_READ		(1 << 8)

#endif
