Rev 3607 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 3607 | Rev 3618 | ||
---|---|---|---|
Line 174... | Line 174... | ||
174 | 174 | ||
175 | #endif |
175 | #endif |
176 | 176 | ||
177 | /** I-/D-TLB Tag Read Register. */ |
177 | /** I-/D-TLB Tag Read Register. */ |
178 | union tlb_tag_read_reg { |
178 | union tlb_tag_read_reg { |
179 | // TODO have a look at how non-8kB pages will be treated |
- | |
180 | uint64_t value; |
179 | uint64_t value; |
181 | struct { |
180 | struct { |
182 | uint64_t vpn : 51; /**< Virtual Address bits 63:13. */ |
181 | uint64_t vpn : 51; /**< Virtual Address bits 63:13. */ |
183 | unsigned context : 13; /**< Context identifier. */ |
182 | unsigned context : 13; /**< Context identifier. */ |
184 | } __attribute__ ((packed)); |
183 | } __attribute__ ((packed)); |
Line 429... | Line 428... | ||
429 | /** Write IMMU TLB Data Access Register. |
428 | /** Write IMMU TLB Data Access Register. |
430 | * @param tlb TLB number (one of TLB_ISMALL or TLB_IBIG) |
429 | * @param tlb TLB number (one of TLB_ISMALL or TLB_IBIG) |
431 | * @param entry TLB Entry index. |
430 | * @param entry TLB Entry index. |
432 | * @param value Value to be written. |
431 | * @param value Value to be written. |
433 | */ |
432 | */ |
434 | static inline void itlb_data_access_write(int tlb, index_t entry, uint64_t value) |
433 | static inline void itlb_data_access_write(int tlb, index_t entry, |
- | 434 | uint64_t value) |
|
435 | { |
435 | { |
436 | itlb_data_access_addr_t reg; |
436 | itlb_data_access_addr_t reg; |
437 | 437 | ||
438 | reg.value = 0; |
438 | reg.value = 0; |
439 | reg.tlb_number = tlb; |
439 | reg.tlb_number = tlb; |
Line 463... | Line 463... | ||
463 | * |
463 | * |
464 | * @param tlb TLB number (one of TLB_DSMALL, TLB_DBIG_0, TLB_DBIG_1) |
464 | * @param tlb TLB number (one of TLB_DSMALL, TLB_DBIG_0, TLB_DBIG_1) |
465 | * @param entry TLB Entry index. |
465 | * @param entry TLB Entry index. |
466 | * @param value Value to be written. |
466 | * @param value Value to be written. |
467 | */ |
467 | */ |
468 | static inline void dtlb_data_access_write(int tlb, index_t entry, uint64_t value) |
468 | static inline void dtlb_data_access_write(int tlb, index_t entry, |
- | 469 | uint64_t value) |
|
469 | { |
470 | { |
470 | dtlb_data_access_addr_t reg; |
471 | dtlb_data_access_addr_t reg; |
471 | 472 | ||
472 | reg.value = 0; |
473 | reg.value = 0; |
473 | reg.tlb_number = tlb; |
474 | reg.tlb_number = tlb; |