Subversion Repositories HelenOS

Rev

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

Rev 1954 Rev 2048
Line 40... Line 40...
40
 * is a nice number considered that it is one of
40
 * is a nice number considered that it is one of
41
 * the page sizes supported by hardware, which,
41
 * the page sizes supported by hardware, which,
42
 * again, is nice because TSBs need to be locked
42
 * again, is nice because TSBs need to be locked
43
 * in TLBs - only one TLB entry will do.
43
 * in TLBs - only one TLB entry will do.
44
 */
44
 */
45
#define TSB_SIZE            2   /* when changing this, change as.c as well */
45
#define TSB_SIZE            2   /* when changing this, change
-
 
46
                         * as.c as well */
46
#define ITSB_ENTRY_COUNT        (512*(1<<TSB_SIZE))
47
#define ITSB_ENTRY_COUNT        (512 * (1 << TSB_SIZE))
47
#define DTSB_ENTRY_COUNT        (512*(1<<TSB_SIZE))
48
#define DTSB_ENTRY_COUNT        (512 * (1 << TSB_SIZE))
48
 
49
 
49
#define TSB_TAG_TARGET_CONTEXT_SHIFT    48
50
#define TSB_TAG_TARGET_CONTEXT_SHIFT    48
50
 
51
 
51
#ifndef __ASM__
52
#ifndef __ASM__
52
 
53
 
Line 78... Line 79...
78
/** TSB Base register. */
79
/** TSB Base register. */
79
union tsb_base_reg {
80
union tsb_base_reg {
80
    uint64_t value;
81
    uint64_t value;
81
    struct {
82
    struct {
82
        uint64_t base : 51; /**< TSB base address, bits 63:13. */
83
        uint64_t base : 51; /**< TSB base address, bits 63:13. */
83
        unsigned split : 1; /**< Split vs. common TSB for 8K and 64K pages.
84
        unsigned split : 1; /**< Split vs. common TSB for 8K and 64K
84
                      *  HelenOS uses only 8K pages for user mappings,
85
                     * pages. HelenOS uses only 8K pages
-
 
86
                     * for user mappings, so we always set
85
                      *  so we always set this to 0.
87
                     * this to 0.
86
                      */
88
                     */
87
        unsigned : 9;
89
        unsigned : 9;
88
        unsigned size : 3;  /**< TSB size. Number of entries is 512*2^size. */
90
        unsigned size : 3;  /**< TSB size. Number of entries is
-
 
91
                     * 512 * 2^size. */
89
    } __attribute__ ((packed));
92
    } __attribute__ ((packed));
90
};
93
};
91
typedef union tsb_base_reg tsb_base_reg_t;
94
typedef union tsb_base_reg tsb_base_reg_t;
92
 
95
 
93
/** Read ITSB Base register.
96
/** Read ITSB Base register.