Changeset 57da95c in mainline for kernel/arch/sparc64/include/mm/tsb.h
- Timestamp:
- 2006-09-18T11:47:28Z (19 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- 29b2bbf
- Parents:
- f1d1f5d3
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
kernel/arch/sparc64/include/mm/tsb.h
rf1d1f5d3 r57da95c 37 37 38 38 #include <arch/mm/tte.h> 39 #include <arch/mm/mmu.h> 39 40 #include <arch/types.h> 40 41 #include <typedefs.h> … … 47 48 * in TLBs - only one TLB entry will do. 48 49 */ 49 #define ITSB_ENTRY_COUNT 2048 50 #define DTSB_ENTRY_COUNT 2048 50 #define TSB_SIZE 2 /* when changing this, change as.c as well */ 51 #define ITSB_ENTRY_COUNT (512*(1<<TSB_SIZE)) 52 #define DTSB_ENTRY_COUNT (512*(1<<TSB_SIZE)) 51 53 52 54 struct tsb_entry { … … 54 56 tte_data_t data; 55 57 } __attribute__ ((packed)); 58 typedef struct tsb_entry tsb_entry_t; 56 59 57 typedef struct tsb_entry tsb_entry_t; 60 /** TSB Base register. */ 61 union tsb_base_reg { 62 uint64_t value; 63 struct { 64 uint64_t base : 51; /**< TSB base address, bits 63:13. */ 65 unsigned split : 1; /**< Split vs. common TSB for 8K and 64K pages. 66 * HelenOS uses only 8K pages for user mappings, 67 * so we always set this to 0. 68 */ 69 unsigned : 9; 70 unsigned size : 3; /**< TSB size. Number of entries is 512*2^size. */ 71 } __attribute__ ((packed)); 72 }; 73 typedef union tsb_base_reg tsb_base_reg_t; 74 75 /** Read ITSB Base register. 76 * 77 * @return Content of the ITSB Base register. 78 */ 79 static inline uint64_t itsb_base_read(void) 80 { 81 return asi_u64_read(ASI_IMMU, VA_IMMU_TSB_BASE); 82 } 83 84 /** Read DTSB Base register. 85 * 86 * @return Content of the DTSB Base register. 87 */ 88 static inline uint64_t dtsb_base_read(void) 89 { 90 return asi_u64_read(ASI_DMMU, VA_DMMU_TSB_BASE); 91 } 92 93 /** Write ITSB Base register. 94 * 95 * @param v New content of the ITSB Base register. 96 */ 97 static inline void itsb_base_write(uint64_t v) 98 { 99 asi_u64_write(ASI_IMMU, VA_IMMU_TSB_BASE, v); 100 } 101 102 /** Write DTSB Base register. 103 * 104 * @param v New content of the DTSB Base register. 105 */ 106 static inline void dtsb_base_write(uint64_t v) 107 { 108 asi_u64_write(ASI_DMMU, VA_DMMU_TSB_BASE, v); 109 } 58 110 59 111 extern void tsb_invalidate(as_t *as, uintptr_t page, count_t pages);
Note:
See TracChangeset
for help on using the changeset viewer.