Subversion Repositories HelenOS-historic

Rev

Rev 394 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 394 Rev 396
Line 39... Line 39...
39
#define TLB_PAGE_MASK_16K   (0x3<<13)
39
#define TLB_PAGE_MASK_16K   (0x3<<13)
40
 
40
 
41
#define PAGE_UNCACHED           2
41
#define PAGE_UNCACHED           2
42
#define PAGE_CACHEABLE_EXC_WRITE    5
42
#define PAGE_CACHEABLE_EXC_WRITE    5
43
 
43
 
44
struct entry_lo {
44
union entry_lo {
-
 
45
    struct {
45
    unsigned g : 1;     /* global bit */
46
        unsigned g : 1;     /* global bit */
46
    unsigned v : 1;     /* valid bit */
47
        unsigned v : 1;     /* valid bit */
47
    unsigned d : 1;     /* dirty/write-protect bit */
48
        unsigned d : 1;     /* dirty/write-protect bit */
48
    unsigned c : 3;     /* cache coherency attribute */
49
        unsigned c : 3;     /* cache coherency attribute */
49
    unsigned pfn : 24;  /* frame number */
50
        unsigned pfn : 24;  /* frame number */
50
    unsigned zero: 2;   /* zero */
51
        unsigned zero: 2;   /* zero */
51
} __attribute__ ((packed));
52
    } __attribute__ ((packed));
-
 
53
    __u32 value;
-
 
54
};
52
 
55
 
53
struct pte {
56
struct pte {
54
    unsigned g : 1;     /* global bit */
57
    unsigned g : 1;     /* global bit */
55
    unsigned v : 1;     /* valid bit */
58
    unsigned v : 1;     /* valid bit */
56
    unsigned d : 1;     /* dirty/write-protect bit */
59
    unsigned d : 1;     /* dirty/write-protect bit */
Line 58... Line 61...
58
    unsigned pfn : 24;  /* frame number */
61
    unsigned pfn : 24;  /* frame number */
59
    unsigned w : 1;     /* writable */
62
    unsigned w : 1;     /* writable */
60
    unsigned a : 1;     /* accessed */
63
    unsigned a : 1;     /* accessed */
61
} __attribute__ ((packed));
64
} __attribute__ ((packed));
62
 
65
 
63
struct entry_hi {
66
union entry_hi {
-
 
67
    struct {
64
    unsigned asid : 8;
68
        unsigned asid : 8;
65
    unsigned : 5;
69
        unsigned : 5;
66
    unsigned vpn2 : 19;
70
        unsigned vpn2 : 19;
67
} __attribute__ ((packed));
71
    } __attribute__ ((packed));
-
 
72
    __u32 value;
-
 
73
};
68
 
74
 
69
struct page_mask {
75
union page_mask {
-
 
76
    struct {
70
    unsigned : 13;
77
        unsigned : 13;
71
    unsigned mask : 12;
78
        unsigned mask : 12;
72
    unsigned : 7;
79
        unsigned : 7;
73
} __attribute__ ((packed));
80
    } __attribute__ ((packed));
-
 
81
    __u32 value;
-
 
82
};
74
 
83
 
75
struct index {
84
union index {
-
 
85
    struct {
76
    unsigned index : 4;
86
        unsigned index : 4;
77
    unsigned : 27;
87
        unsigned : 27;
78
    unsigned p : 1;
88
        unsigned p : 1;
79
} __attribute__ ((packed));
89
    } __attribute__ ((packed));
-
 
90
    __u32 value;
-
 
91
};
-
 
92
 
-
 
93
typedef union entry_lo entry_lo_t;
-
 
94
typedef union entry_hi entry_hi_t;
-
 
95
typedef union page_mask page_mask_t;
-
 
96
typedef union index tlb_index_t;
80
 
97
 
81
/** Probe TLB for Matching Entry
98
/** Probe TLB for Matching Entry
82
 *
99
 *
83
 * Probe TLB for Matching Entry.
100
 * Probe TLB for Matching Entry.
84
 */
101
 */