Changeset 97f1691 in mainline for arch/sparc64/src
- Timestamp:
- 2006-02-28T00:02:39Z (20 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- 7d6ec87
- Parents:
- d87c3f3
- Location:
- arch/sparc64/src
- Files:
-
- 1 added
- 5 edited
-
console.c (modified) (2 diffs)
-
mm/tlb.c (modified) (5 diffs)
-
proc/scheduler.c (added)
-
sparc64.c (modified) (1 diff)
-
trap/exception.c (modified) (1 diff)
-
trap/trap_table.S (modified) (2 diffs)
Legend:
- Unmodified
- Added
- Removed
-
arch/sparc64/src/console.c
rd87c3f3 r97f1691 41 41 #include <proc/thread.h> 42 42 #include <synch/mutex.h> 43 #include <arch/mm/tlb.h> 43 44 44 45 #define KEYBOARD_POLL_PAUSE 50000 /* 50ms */ … … 76 77 ofw_console_active = 0; 77 78 stdin = NULL; 79 80 dtlb_insert_mapping(FB_VIRT_ADDRESS, FB_PHYS_ADDRESS, PAGESIZE_4M, true, false); 81 dtlb_insert_mapping(KBD_VIRT_ADDRESS, KBD_PHYS_ADDRESS, PAGESIZE_8K, true, false); 82 78 83 fb_init(FB_VIRT_ADDRESS, FB_X_RES, FB_Y_RES, FB_COLOR_DEPTH/8); 79 84 i8042_init(); -
arch/sparc64/src/mm/tlb.c
rd87c3f3 r97f1691 110 110 dmmu_enable(); 111 111 immu_enable(); 112 113 /* 114 * Quick hack: map frame buffer 115 */ 116 fr.address = FB_PHYS_ADDRESS; 117 pg.address = FB_VIRT_ADDRESS; 112 } 113 114 /** Insert privileged mapping into DMMU TLB. 115 * 116 * @param page Virtual page address. 117 * @param frame Physical frame address. 118 * @param pagesize Page size. 119 * @param locked True for permanent mappings, false otherwise. 120 * @param cacheable True if the mapping is cacheable, false otherwise. 121 */ 122 void dtlb_insert_mapping(__address page, __address frame, int pagesize, bool locked, bool cacheable) 123 { 124 tlb_tag_access_reg_t tag; 125 tlb_data_t data; 126 page_address_t pg; 127 frame_address_t fr; 128 129 pg.address = page; 130 fr.address = frame; 118 131 119 132 tag.value = ASID_KERNEL; … … 124 137 data.value = 0; 125 138 data.v = true; 126 data.size = PAGESIZE_4M;139 data.size = pagesize; 127 140 data.pfn = fr.pfn; 128 data.l = true;129 data.cp = 0;130 data.cv = 0;141 data.l = locked; 142 data.cp = cacheable; 143 data.cv = cacheable; 131 144 data.p = true; 132 145 data.w = true; … … 134 147 135 148 dtlb_data_in_write(data.value); 136 137 /*138 * Quick hack: map keyboard139 */140 fr.address = KBD_PHYS_ADDRESS;141 pg.address = KBD_VIRT_ADDRESS;142 143 tag.value = ASID_KERNEL;144 tag.vpn = pg.vpn;145 146 dtlb_tag_access_write(tag.value);147 148 data.value = 0;149 data.v = true;150 data.size = PAGESIZE_8K;151 data.pfn = fr.pfn;152 data.l = true;153 data.cp = 0;154 data.cv = 0;155 data.p = true;156 data.w = true;157 data.g = true;158 159 dtlb_data_in_write(data.value);160 149 } 161 150 … … 170 159 { 171 160 tlb_tag_access_reg_t tag; 172 tlb_data_t data;173 161 __address tpc; 174 162 char *tpc_str; … … 187 175 * Identity map piece of faulting kernel address space. 188 176 */ 189 data.value = 0; 190 data.v = true; 191 data.size = PAGESIZE_8K; 192 data.pfn = tag.vpn; 193 data.l = false; 194 data.cp = 1; 195 data.cv = 1; 196 data.p = true; 197 data.w = true; 198 data.g = true; 199 200 dtlb_data_in_write(data.value); 177 dtlb_insert_mapping(tag.vpn * PAGE_SIZE, tag.vpn * FRAME_SIZE, PAGESIZE_8K, false, true); 201 178 } 202 179 -
arch/sparc64/src/sparc64.c
rd87c3f3 r97f1691 75 75 { 76 76 } 77 78 void before_thread_runs_arch(void)79 {80 } -
arch/sparc64/src/trap/exception.c
rd87c3f3 r97f1691 43 43 } 44 44 45 /** Handle data_access_error. */ 46 void do_data_access_error(void) 47 { 48 panic("Data Access Error: %P\n", tpc_read()); 49 } 50 45 51 /** Handle mem_address_not_aligned. */ 46 52 void do_illegal_instruction(void) -
arch/sparc64/src/trap/trap_table.S
rd87c3f3 r97f1691 73 73 CLEAN_WINDOW_HANDLER 74 74 75 /* TT = 0x32, TL = 0, data_access_error */ 76 .org trap_table + TT_DATA_ACCESS_ERROR*ENTRY_SIZE 77 .global data_access_error 78 data_access_error: 79 SIMPLE_HANDLER do_data_access_error 80 75 81 /* TT = 0x34, TL = 0, mem_address_not_aligned */ 76 82 .org trap_table + TT_MEM_ADDRESS_NOT_ALIGNED*ENTRY_SIZE … … 226 232 clean_window_handler_high: 227 233 CLEAN_WINDOW_HANDLER 234 235 /* TT = 0x32, TL > 0, data_access_error */ 236 .org trap_table + (TT_DATA_ACCESS_ERROR+512)*ENTRY_SIZE 237 .global data_access_error_high 238 data_access_error_high: 239 SIMPLE_HANDLER do_data_access_error 228 240 229 241 /* TT = 0x34, TL > 0, mem_address_not_aligned */
Note:
See TracChangeset
for help on using the changeset viewer.
