Rev 597 | Rev 730 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 597 | Rev 727 | ||
---|---|---|---|
Line 29... | Line 29... | ||
29 | #include <mm/tlb.h> |
29 | #include <mm/tlb.h> |
30 | #include <arch/mm/asid.h> |
30 | #include <arch/mm/asid.h> |
31 | #include <arch/asm.h> |
31 | #include <arch/asm.h> |
32 | #include <arch/types.h> |
32 | #include <arch/types.h> |
33 | 33 | ||
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 | - | ||
45 | /** Invalidate all entries in TLB. */ |
34 | /** Invalidate all entries in TLB. */ |
46 | void tlb_invalidate_all(void) |
35 | void tlb_invalidate_all(void) |
47 | { |
36 | { |
48 | write_cr3(read_cr3()); |
37 | write_cr3(read_cr3()); |
49 | } |
38 | } |
Line 55... | Line 44... | ||
55 | void tlb_invalidate_asid(asid_t asid) |
44 | void tlb_invalidate_asid(asid_t asid) |
56 | { |
45 | { |
57 | tlb_invalidate_all(); |
46 | tlb_invalidate_all(); |
58 | } |
47 | } |
59 | 48 | ||
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. |
61 | * |
50 | * |
62 | * @param asid This parameter is ignored as the architecture doesn't support it. |
51 | * @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. |
|
64 | */ |
54 | */ |
65 | void tlb_invalidate_page(asid_t asid, __address page) |
55 | void tlb_invalidate_pages(asid_t asid, __address page, count_t cnt) |
66 | { |
56 | { |
- | 57 | int i; |
|
- | 58 | ||
- | 59 | for (i = 0; i < cnt; i++) |
|
67 | invlpg(page); |
60 | invlpg(page + i * PAGE_SIZE); |
68 | } |
61 | } |