OpenCores
URL https://opencores.org/ocsvn/c0or1k/c0or1k/trunk

Subversion Repositories c0or1k

[/] [c0or1k/] [trunk/] [include/] [l4/] [glue/] [tests/] [memory.h] - Rev 6

Go to most recent revision | Compare with Previous | Blame | View Log

/*
 * Memory related definitions for test purposes.
 *
 * Copyright (C) 2007 Bahadir Balban
 *
 */
#ifndef __GLUE_TEST_MEMORY_H__
#define __GLUE_TEST_MEMORY_H__
 
 
/* ARM specific definitions */
#define TEST_SECTION_SIZE		SZ_1MB
//#define TEST_PAGE_SIZE			SZ_4K
//#define TEST_PAGE_MASK			0xFFF
//#define TEST_PAGE_BITS			12
#define TEST_PAGE_SIZE			128
#define TEST_PAGE_MASK			(TEST_PAGE_SIZE-1)
#define TEST_PAGE_BITS			7
#define TEST_SECTION_MASK		0xFFFFF
 
/* Aligns to the upper page (ceiling) */
#define page_align_up(addr) 		((((unsigned int)(addr)) + \
					  (PAGE_SIZE - 1)) & \
					 (~PAGE_MASK))
/* Aligns to the lower page (floor) */
#define page_align(addr)		(((unsigned int)(addr)) &  \
					 (~PAGE_MASK))
 
/* Align to given size */
#define	align(addr, size)		(((unsigned int)(addr)) & (~(size-1)))
 
/* Extract page frame number from address */
#define __pfn(x)		(((unsigned long)(x)) >> PAGE_BITS)
#define __pfn_to_addr(x)	(((unsigned long)(x)) << PAGE_BITS)
 
/* Extract physical address from page table entry (pte) */
#define __pte_to_addr(x)	(((unsigned long)(x)) & ~PAGE_MASK)
 
/* Minimum excess needed for word alignment */
#define SZ_WORD				sizeof(unsigned long)
#define WORD_BITS			32
 
#define BITWISE_GETWORD(x)	((x) >> 5) /* Divide by 32 */
#define	BITWISE_GETBIT(x)	(1 << ((x) % WORD_BITS))
 
#define align_up(addr, size)		((((unsigned long)(addr)) + ((size) - 1)) & (~((size) - 1)))
 
/* Generic definitions */
extern unsigned int PAGE_SIZE;
extern unsigned int PAGE_MASK;
extern unsigned int PAGE_BITS;
 
 
/* Type-checkable page table elements */
typedef u32 pgd_t;
typedef u32 pmd_t;
typedef u32 pte_t;
 
/* Page global directory made up of pgd_t entries */
typedef struct pgd_table {
	pgd_t entry[SZ_4K];
} pgd_table_t;
 
/* Page middle directory made up of pmd_t entries */
typedef struct pmd_table {
	pmd_t entry[256];
} pmd_table_t;
 
 
/* Number of pmd tables to describe all physical memory.
 * TODO: Need more for IO etc. */
#define NUM_PMD_TABLES	((PHYS_MEM_END - PHYS_MEM_START) / PAGE_SIZE) \
			/ PMD_NUM_PAGES
 
/* Page table related */
extern pgd_table_t kspace;
extern pmd_table_t pmd_tables[];
extern unsigned long pmdtab_i;
 
void paging_init(void);
void init_clear_ptab(void);
 
#endif /* __GLUE_TEST_MEMORY_H__ */
 
 

Go to most recent revision | Compare with Previous | Blame | View Log

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.