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

Subversion Repositories c0or1k

[/] [c0or1k/] [trunk/] [include/] [l4/] [glue/] [tests/] [memory.h] - Blame information for rev 2

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 2 drasko
/*
2
 * Memory related definitions for test purposes.
3
 *
4
 * Copyright (C) 2007 Bahadir Balban
5
 *
6
 */
7
#ifndef __GLUE_TEST_MEMORY_H__
8
#define __GLUE_TEST_MEMORY_H__
9
 
10
 
11
/* ARM specific definitions */
12
#define TEST_SECTION_SIZE               SZ_1MB
13
//#define TEST_PAGE_SIZE                        SZ_4K
14
//#define TEST_PAGE_MASK                        0xFFF
15
//#define TEST_PAGE_BITS                        12
16
#define TEST_PAGE_SIZE                  128
17
#define TEST_PAGE_MASK                  (TEST_PAGE_SIZE-1)
18
#define TEST_PAGE_BITS                  7
19
#define TEST_SECTION_MASK               0xFFFFF
20
 
21
/* Aligns to the upper page (ceiling) */
22
#define page_align_up(addr)             ((((unsigned int)(addr)) + \
23
                                          (PAGE_SIZE - 1)) & \
24
                                         (~PAGE_MASK))
25
/* Aligns to the lower page (floor) */
26
#define page_align(addr)                (((unsigned int)(addr)) &  \
27
                                         (~PAGE_MASK))
28
 
29
/* Align to given size */
30
#define align(addr, size)               (((unsigned int)(addr)) & (~(size-1)))
31
 
32
/* Extract page frame number from address */
33
#define __pfn(x)                (((unsigned long)(x)) >> PAGE_BITS)
34
#define __pfn_to_addr(x)        (((unsigned long)(x)) << PAGE_BITS)
35
 
36
/* Extract physical address from page table entry (pte) */
37
#define __pte_to_addr(x)        (((unsigned long)(x)) & ~PAGE_MASK)
38
 
39
/* Minimum excess needed for word alignment */
40
#define SZ_WORD                         sizeof(unsigned long)
41
#define WORD_BITS                       32
42
 
43
#define BITWISE_GETWORD(x)      ((x) >> 5) /* Divide by 32 */
44
#define BITWISE_GETBIT(x)       (1 << ((x) % WORD_BITS))
45
 
46
#define align_up(addr, size)            ((((unsigned long)(addr)) + ((size) - 1)) & (~((size) - 1)))
47
 
48
/* Generic definitions */
49
extern unsigned int PAGE_SIZE;
50
extern unsigned int PAGE_MASK;
51
extern unsigned int PAGE_BITS;
52
 
53
 
54
/* Type-checkable page table elements */
55
typedef u32 pgd_t;
56
typedef u32 pmd_t;
57
typedef u32 pte_t;
58
 
59
/* Page global directory made up of pgd_t entries */
60
typedef struct pgd_table {
61
        pgd_t entry[SZ_4K];
62
} pgd_table_t;
63
 
64
/* Page middle directory made up of pmd_t entries */
65
typedef struct pmd_table {
66
        pmd_t entry[256];
67
} pmd_table_t;
68
 
69
 
70
/* Number of pmd tables to describe all physical memory.
71
 * TODO: Need more for IO etc. */
72
#define NUM_PMD_TABLES  ((PHYS_MEM_END - PHYS_MEM_START) / PAGE_SIZE) \
73
                        / PMD_NUM_PAGES
74
 
75
/* Page table related */
76
extern pgd_table_t kspace;
77
extern pmd_table_t pmd_tables[];
78
extern unsigned long pmdtab_i;
79
 
80
void paging_init(void);
81
void init_clear_ptab(void);
82
 
83
#endif /* __GLUE_TEST_MEMORY_H__ */
84
 

powered by: WebSVN 2.1.0

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