Subversion Repositories HelenOS

Rev

Rev 3489 | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 3489 Rev 3862
Line 33... Line 33...
33
 */
33
 */
34
 
34
 
35
#ifndef KERN_sparc64_FRAME_H_
35
#ifndef KERN_sparc64_FRAME_H_
36
#define KERN_sparc64_FRAME_H_
36
#define KERN_sparc64_FRAME_H_
37
 
37
 
38
/*
-
 
39
 * Page size supported by the MMU.
-
 
40
 * For 8K there is the nasty illegal virtual aliasing problem.
-
 
41
 * Therefore, the kernel uses 8K only internally on the TLB and TSB levels.
-
 
42
 */
-
 
43
#define MMU_FRAME_WIDTH     13  /* 8K */
-
 
44
#define MMU_FRAME_SIZE      (1 << MMU_FRAME_WIDTH)
-
 
45
 
-
 
46
/*
-
 
47
 * Page size exported to the generic memory management subsystems.
-
 
48
 * This page size is not directly supported by the MMU, but we can emulate
-
 
49
 * each 16K page with a pair of adjacent 8K pages.
-
 
50
 */
-
 
51
#define FRAME_WIDTH     14  /* 16K */
-
 
52
#define FRAME_SIZE      (1 << FRAME_WIDTH)
-
 
53
 
-
 
54
#ifdef KERNEL
38
#if defined (SUN4U)
55
#ifndef __ASM__
-
 
56
 
-
 
57
#include <arch/types.h>
39
#include <arch/mm/sun4u/frame.h>
58
 
-
 
59
union frame_address {
-
 
60
    uintptr_t address;
-
 
61
    struct {
-
 
62
#if defined (US)
-
 
63
        unsigned : 23;
-
 
64
        uint64_t pfn : 28;      /**< Physical Frame Number. */
-
 
65
#elif defined (US3)
40
#elif defined (SUN4V)
66
        unsigned : 21;
-
 
67
        uint64_t pfn : 30;      /**< Physical Frame Number. */
-
 
68
#endif
-
 
69
        unsigned offset : 13;       /**< Offset. */
-
 
70
    } __attribute__ ((packed));
-
 
71
};
-
 
72
 
-
 
73
typedef union frame_address frame_address_t;
-
 
74
 
-
 
75
extern uintptr_t last_frame;
41
#include <arch/mm/sun4v/frame.h>
76
extern void frame_arch_init(void);
-
 
77
#define physmem_print()
-
 
78
 
-
 
79
#endif
-
 
80
#endif
42
#endif
81
 
43
 
82
#endif
44
#endif
83
 
45
 
84
/** @}
46
/** @}