Changeset 4512d7e in mainline for arch/ia32


Ignore:
Timestamp:
2006-01-19T22:17:47Z (20 years ago)
Author:
Jakub Jermar <jakub@…>
Branches:
lfn, master, serial, ticket/834-toolchain-update, topic/fix-logger-deadlock, topic/msim-upgrade, topic/simplify-dev-export
Children:
6461d67c
Parents:
64c44e8
Message:

New ASID management subsystem (initial work, more is required).
Some TLB invalidation changes.

Location:
arch/ia32
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • arch/ia32/include/mm/asid.h

    r64c44e8 r4512d7e  
    2727 */
    2828
     29/*
     30 * ia32 has no hardware support for address space identifiers.
     31 * This file is provided to do nop-implementation of mm/asid.h
     32 * interface.
     33 */
     34
    2935#ifndef __ia32_ASID_H__
    3036#define __ia32_ASID_H__
     
    3238typedef int asid_t;
    3339
    34 #define asid_get()      0
     40#define ASID_MAX_ARCH           0
     41
     42#define asid_install(as)
    3543
    3644#endif
  • arch/ia32/src/mm/tlb.c

    r64c44e8 r4512d7e  
    3232#include <arch/types.h>
    3333
    34 /** Invalidate all TLB entries
    35  *
    36  * Invalidate all TLB entries.
    37  *
    38  * @param asid This argument is ignored.
    39  */
    40 void tlb_invalidate(asid_t asid)
    41 {
    42         write_cr3(read_cr3());
    43 }
    44 
    4534/** Invalidate all entries in TLB. */
    4635void tlb_invalidate_all(void)
     
    5847}
    5948
    60 /** Invalidate TLB entry for specified page belongs to specified address space.
     49/** Invalidate TLB entry for specified page range belonging to specified address space.
    6150 *
    6251 * @param asid This parameter is ignored as the architecture doesn't support it.
    63  * @param page Address of the page whose entry is to be invalidated.
     52 * @param page Address of the first page whose entry is to be invalidated.
     53 * @param cnt Number of entries to invalidate.
    6454 */
    65 void tlb_invalidate_page(asid_t asid, __address page)
     55void tlb_invalidate_pages(asid_t asid, __address page, count_t cnt)
    6656{
    67         invlpg(page);
     57        int i;
     58
     59        for (i = 0; i < cnt; i++)
     60                invlpg(page + i * PAGE_SIZE);
    6861}
Note: See TracChangeset for help on using the changeset viewer.