Changeset 92778f2 in mainline for kernel/arch/sparc64/src/mm/as.c


Ignore:
Timestamp:
2006-12-04T21:14:07Z (18 years ago)
Author:
Jakub Jermar <jakub@…>
Branches:
lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
4b43f86
Parents:
3d76996
Message:

Initial support for handling illegal virtual aliases on sparc64.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • kernel/arch/sparc64/src/mm/as.c

    r3d76996 r92778f2  
    4848#include <bitops.h>
    4949#include <macros.h>
    50 #endif
     50#endif /* CONFIG_TSB */
     51
     52#ifdef CONFIG_VIRT_IDX_DCACHE
     53#include <arch/mm/cache.h>
     54#endif /* CONFIG_VIRT_IDX_DCACHE */
    5155
    5256/** Architecture dependent address space init. */
     
    159163        dtsb_base_write(tsb_base.value);
    160164#endif
     165#ifdef CONFIG_VIRT_IDX_DCACHE
     166        if (as->dcache_flush_on_install) {
     167                /*
     168                 * Some mappings in this address space are illegal address
     169                 * aliases. Upon their creation, the flush_dcache_on_install
     170                 * flag was set.
     171                 *
     172                 * We are now obliged to flush the D-cache in order to guarantee
     173                 * that there will be at most one cache line for each address
     174                 * alias.
     175                 *
     176                 * This flush performs a cleanup after another address space in
     177                 * which the alias might have existed.
     178                 */
     179                dcache_flush();
     180        }
     181#endif /* CONFIG_VIRT_IDX_DCACHE */
    161182}
    162183
     
    193214        }
    194215#endif
     216#ifdef CONFIG_VIRT_IDX_DCACHE
     217        if (as->dcache_flush_on_deinstall) {
     218                /*
     219                 * Some mappings in this address space are illegal address
     220                 * aliases. Upon their creation, the flush_dcache_on_deinstall
     221                 * flag was set.
     222                 *
     223                 * We are now obliged to flush the D-cache in order to guarantee
     224                 * that there will be at most one cache line for each address
     225                 * alias.
     226                 *
     227                 * This flush performs a cleanup after this address space. It is
     228                 * necessary because other address spaces that contain the same
     229                 * alias are not necessarily aware of the need to carry out the
     230                 * cache flush. The only address spaces that are aware of it are
     231                 * those that created the illegal alias.
     232                 */
     233                dcache_flush();
     234        }
     235#endif /* CONFIG_VIRT_IDX_DCACHE */
    195236}
    196237
Note: See TracChangeset for help on using the changeset viewer.