Changeset 2057572 in mainline for kernel/generic/src/mm/backend_elf.c


Ignore:
Timestamp:
2007-03-27T23:40:25Z (18 years ago)
Author:
Jakub Jermar <jakub@…>
Branches:
lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
399ece9
Parents:
8d37a06
Message:

The Ultimate Solution To Illegal Virtual Aliases.
It is better to avoid them completely than to fight them.
Switch the sparc64 port to 16K pages. The TLBs and TSBs
continue to operate with 8K pages only. Page tables and
other generic parts operate with 16K pages.

Because the MMU doesn't support 16K directly, each 16K
page is emulated by a pair of 8K pages. With 16K pages,
illegal aliases cannot be created in 16K D-cache.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • kernel/generic/src/mm/backend_elf.c

    r8d37a06 r2057572  
    209209        if (!used_space_insert(area, ALIGN_DOWN(addr, PAGE_SIZE), 1))
    210210                panic("Could not insert used space.\n");
    211 
    212 #ifdef CONFIG_VIRT_IDX_DCACHE
    213         if (dirty && PAGE_COLOR(PA2KA(frame)) != PAGE_COLOR(addr)) {
    214                 /*
    215                  * By writing to the frame using kernel virtual address,
    216                  * we have created an illegal virtual alias. We now have to
    217                  * invalidate cachelines belonging to addr on all processors
    218                  * so that they will be reloaded with the new content on next
    219                  * read.
    220                  */
    221                 dcache_flush_frame(addr, frame);
    222                 dcache_shootdown_start(DCACHE_INVL_FRAME, PAGE_COLOR(addr), frame);
    223                 dcache_shootdown_finalize();
    224         }
    225 #endif
    226211
    227212        return AS_PF_OK;
     
    356341/** @}
    357342 */
    358 
Note: See TracChangeset for help on using the changeset viewer.