Subversion Repositories HelenOS

Rev

Rev 3607 | Go to most recent revision | Show entire file | Ignore 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;