Rev 1946 | Rev 2071 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 1946 | Rev 2054 | ||
---|---|---|---|
Line 380... | Line 380... | ||
380 | } |
380 | } |
381 | 381 | ||
382 | /** Perform IMMU TLB Demap Operation. |
382 | /** Perform IMMU TLB Demap Operation. |
383 | * |
383 | * |
384 | * @param type Selects between context and page demap. |
384 | * @param type Selects between context and page demap. |
385 | * @param context_encoding Specifies which Context register has Context ID for demap. |
385 | * @param context_encoding Specifies which Context register has Context ID for |
- | 386 | * demap. |
|
386 | * @param page Address which is on the page to be demapped. |
387 | * @param page Address which is on the page to be demapped. |
387 | */ |
388 | */ |
388 | static inline void itlb_demap(int type, int context_encoding, uintptr_t page) |
389 | static inline void itlb_demap(int type, int context_encoding, uintptr_t page) |
389 | { |
390 | { |
390 | tlb_demap_addr_t da; |
391 | tlb_demap_addr_t da; |
Line 395... | Line 396... | ||
395 | 396 | ||
396 | da.type = type; |
397 | da.type = type; |
397 | da.context = context_encoding; |
398 | da.context = context_encoding; |
398 | da.vpn = pg.vpn; |
399 | da.vpn = pg.vpn; |
399 | 400 | ||
400 | asi_u64_write(ASI_IMMU_DEMAP, da.value, 0); /* da.value is the address within the ASI */ |
401 | asi_u64_write(ASI_IMMU_DEMAP, da.value, 0); /* da.value is the |
- | 402 | * address within the |
|
- | 403 | * ASI */ |
|
401 | flush(); |
404 | flush(); |
402 | } |
405 | } |
403 | 406 | ||
404 | /** Perform DMMU TLB Demap Operation. |
407 | /** Perform DMMU TLB Demap Operation. |
405 | * |
408 | * |
406 | * @param type Selects between context and page demap. |
409 | * @param type Selects between context and page demap. |
407 | * @param context_encoding Specifies which Context register has Context ID for demap. |
410 | * @param context_encoding Specifies which Context register has Context ID for |
- | 411 | * demap. |
|
408 | * @param page Address which is on the page to be demapped. |
412 | * @param page Address which is on the page to be demapped. |
409 | */ |
413 | */ |
410 | static inline void dtlb_demap(int type, int context_encoding, uintptr_t page) |
414 | static inline void dtlb_demap(int type, int context_encoding, uintptr_t page) |
411 | { |
415 | { |
412 | tlb_demap_addr_t da; |
416 | tlb_demap_addr_t da; |
Line 417... | Line 421... | ||
417 | 421 | ||
418 | da.type = type; |
422 | da.type = type; |
419 | da.context = context_encoding; |
423 | da.context = context_encoding; |
420 | da.vpn = pg.vpn; |
424 | da.vpn = pg.vpn; |
421 | 425 | ||
422 | asi_u64_write(ASI_DMMU_DEMAP, da.value, 0); /* da.value is the address within the ASI */ |
426 | asi_u64_write(ASI_DMMU_DEMAP, da.value, 0); /* da.value is the |
- | 427 | * address within the |
|
- | 428 | * ASI */ |
|
423 | membar(); |
429 | membar(); |
424 | } |
430 | } |
425 | 431 | ||
426 | extern void fast_instruction_access_mmu_miss(int n, istate_t *istate); |
432 | extern void fast_instruction_access_mmu_miss(int n, istate_t *istate); |
427 | extern void fast_data_access_mmu_miss(int n, istate_t *istate); |
433 | extern void fast_data_access_mmu_miss(int n, istate_t *istate); |