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

Subversion Repositories or1k

[/] [or1k/] [trunk/] [rc203soc/] [sw/] [uClinux/] [include/] [asm-sparc/] [page.h] - Blame information for rev 1765

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 1633 jcastillo
/* $Id: page.h,v 1.1 2005-12-20 11:32:11 jcastillo Exp $
2
 * page.h:  Various defines and such for MMU operations on the Sparc for
3
 *          the Linux kernel.
4
 *
5
 * Copyright (C) 1995 David S. Miller (davem@caip.rutgers.edu)
6
 */
7
 
8
#ifndef _SPARC_PAGE_H
9
#define _SPARC_PAGE_H
10
 
11
#include <asm/head.h>       /* for KERNBASE */
12
 
13
#define PAGE_SHIFT   12
14
#define PAGE_OFFSET  KERNBASE
15
#define PAGE_SIZE    (1 << PAGE_SHIFT)
16
#define PAGE_MASK    (~(PAGE_SIZE-1))
17
 
18
#ifdef __KERNEL__
19
#ifndef __ASSEMBLY__
20
 
21
/* The following structure is used to hold the physical
22
 * memory configuration of the machine.  This is filled in
23
 * probe_memory() and is later used by mem_init() to set up
24
 * mem_map[].  We statically allocate SPARC_PHYS_BANKS of
25
 * these structs, this is arbitrary.  The entry after the
26
 * last valid one has num_bytes==0.
27
 */
28
 
29
struct sparc_phys_banks {
30
  unsigned long base_addr;
31
  unsigned long num_bytes;
32
};
33
 
34
#define SPARC_PHYS_BANKS 32
35
 
36
extern struct sparc_phys_banks sp_banks[SPARC_PHYS_BANKS];
37
 
38
/* Cache alias structure.  Entry is valid if context != -1. */
39
struct cache_palias {
40
        unsigned long vaddr;
41
        int context;
42
};
43
 
44
extern struct cache_palias *sparc_aliases;
45
 
46
/* passing structs on the Sparc slow us down tremendously... */
47
 
48
/* #define STRICT_MM_TYPECHECKS */
49
 
50
#ifdef STRICT_MM_TYPECHECKS
51
/*
52
 * These are used to make use of C type-checking..
53
 */
54
typedef struct { unsigned long pte; } pte_t;
55
typedef struct { unsigned long iopte; } iopte_t;
56
typedef struct { unsigned long pmd; } pmd_t;
57
typedef struct { unsigned long pgd; } pgd_t;
58
typedef struct { unsigned long ctxd; } ctxd_t;
59
typedef struct { unsigned long pgprot; } pgprot_t;
60
typedef struct { unsigned long iopgprot; } iopgprot_t;
61
 
62
#define pte_val(x)      ((x).pte)
63
#define iopte_val(x)    ((x).iopte)
64
#define pmd_val(x)      ((x).pmd)
65
#define pgd_val(x)      ((x).pgd)
66
#define ctxd_val(x)     ((x).ctxd)
67
#define pgprot_val(x)   ((x).pgprot)
68
#define iopgprot_val(x) ((x).iopgprot)
69
 
70
#define __pte(x)        ((pte_t) { (x) } )
71
#define __iopte(x)      ((iopte_t) { (x) } )
72
#define __pmd(x)        ((pmd_t) { (x) } )
73
#define __pgd(x)        ((pgd_t) { (x) } )
74
#define __ctxd(x)       ((ctxd_t) { (x) } )
75
#define __pgprot(x)     ((pgprot_t) { (x) } )
76
#define __iopgprot(x)   ((iopgprot_t) { (x) } )
77
 
78
#else
79
/*
80
 * .. while these make it easier on the compiler
81
 */
82
typedef unsigned long pte_t;
83
typedef unsigned long iopte_t;
84
typedef unsigned long pmd_t;
85
typedef unsigned long pgd_t;
86
typedef unsigned long ctxd_t;
87
typedef unsigned long pgprot_t;
88
typedef unsigned long iopgprot_t;
89
 
90
#define pte_val(x)      (x)
91
#define iopte_val(x)    (x)
92
#define pmd_val(x)      (x)
93
#define pgd_val(x)      (x)
94
#define ctxd_val(x)     (x)
95
#define pgprot_val(x)   (x)
96
#define iopgprot_val(x) (x)
97
 
98
#define __pte(x)        (x)
99
#define __iopte(x)      (x)
100
#define __pmd(x)        (x)
101
#define __pgd(x)        (x)
102
#define __ctxd(x)       (x)
103
#define __pgprot(x)     (x)
104
#define __iopgprot(x)   (x)
105
 
106
#endif
107
 
108
/* to align the pointer to the (next) page boundary */
109
#define PAGE_ALIGN(addr)  (((addr)+PAGE_SIZE-1)&PAGE_MASK)
110
 
111
/* We now put the free page pool mapped contiguously in high memory above
112
 * the kernel.
113
 */
114
#define MAP_NR(addr) ((((unsigned long) (addr)) - PAGE_OFFSET) >> PAGE_SHIFT)
115
 
116
#endif /* !(__ASSEMBLY__) */
117
 
118
#endif /* __KERNEL__ */
119
 
120
#endif /* _SPARC_PAGE_H */

powered by: WebSVN 2.1.0

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