Changeset 22f0561 in mainline for kernel/arch/ia64/src/mm/tlb.c


Ignore:
Timestamp:
2011-12-31T00:12:58Z (12 years ago)
Author:
Jakub Jermar <jakub@…>
Branches:
lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
2107e79, c520034
Parents:
efb48eb
Message:

Get rid of kernel static non-identity mappings on ia64.

  • IO_OFFSET is replaced by legacyio_virt_base and LEGACYIO_USER_BASE.
  • VIO_OFFSET and FW_OFFSET are removed entirely.
  • Legacy I/O and IO SAPIC are mapped via hw_map().
  • Remove corresponding locked translation records.
  • Cleanup ia64 kernel pio_read/write_8|16|32().
File:
1 edited

Legend:

Unmodified
Added
Removed
  • kernel/arch/ia64/src/mm/tlb.c

    refb48eb r22f0561  
    5252#include <arch.h>
    5353#include <interrupt.h>
    54 
    55 #define IO_FRAME_BASE 0xFFFFC000000
     54#include <arch/legacyio.h>
    5655
    5756/** Invalidate all TLB entries. */
     
    530529static int try_memmap_io_insertion(uintptr_t va, istate_t *istate)
    531530{
    532         if ((va >= IO_OFFSET ) && (va < IO_OFFSET + (1 << IO_PAGE_WIDTH))) {
     531        if ((va >= LEGACYIO_USER_BASE) && (va < LEGACYIO_USER_BASE + (1 << LEGACYIO_PAGE_WIDTH))) {
    533532                if (TASK) {
    534                         uint64_t io_page = (va & ((1 << IO_PAGE_WIDTH) - 1)) >>
    535                             USPACE_IO_PAGE_WIDTH;
     533                        uint64_t io_page = (va & ((1 << LEGACYIO_PAGE_WIDTH) - 1)) >>
     534                            LEGACYIO_SINGLE_PAGE_WIDTH;
    536535                       
    537536                        if (is_io_page_accessible(io_page)) {
    538537                                uint64_t page, frame;
    539538                               
    540                                 page = IO_OFFSET +
    541                                     (1 << USPACE_IO_PAGE_WIDTH) * io_page;
    542                                 frame = IO_FRAME_BASE +
    543                                     (1 << USPACE_IO_PAGE_WIDTH) * io_page;
     539                                page = LEGACYIO_USER_BASE +
     540                                    (1 << LEGACYIO_SINGLE_PAGE_WIDTH) * io_page;
     541                                frame = LEGACYIO_PHYS_BASE +
     542                                    (1 << LEGACYIO_SINGLE_PAGE_WIDTH) * io_page;
    544543                               
    545544                                tlb_entry_t entry;
     
    555554                                entry.ar = AR_READ | AR_WRITE;
    556555                                entry.ppn = frame >> PPN_SHIFT;
    557                                 entry.ps = USPACE_IO_PAGE_WIDTH;
     556                                entry.ps = LEGACYIO_SINGLE_PAGE_WIDTH;
    558557                               
    559558                                dtc_mapping_insert(page, TASK->as->asid, entry);
Note: See TracChangeset for help on using the changeset viewer.