Rev 1787 | Rev 2028 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed
| Rev 1787 | Rev 2021 | ||
|---|---|---|---|
| Line 23... | Line 23... | ||
| 23 | * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY |
23 | * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY |
| 24 | * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT |
24 | * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT |
| 25 | * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF |
25 | * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF |
| 26 | * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
26 | * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
| 27 | */ |
27 | */ |
| - | 28 | ||
| 28 | #include <print.h> |
29 | #include <print.h> |
| 29 | #include <test.h> |
30 | #include <test.h> |
| 30 | #include <mm/page.h> |
31 | #include <mm/page.h> |
| 31 | #include <mm/frame.h> |
32 | #include <mm/frame.h> |
| 32 | #include <mm/as.h> |
33 | #include <mm/as.h> |
| 33 | #include <arch/mm/page.h> |
34 | #include <arch/mm/page.h> |
| 34 | #include <arch/mm/tlb.h> |
35 | #include <arch/mm/tlb.h> |
| 35 | #include <arch/types.h> |
36 | #include <arch/types.h> |
| 36 | #include <debug.h> |
37 | #include <debug.h> |
| 37 | 38 | ||
| - | 39 | #ifdef ia64 |
|
| 38 | 40 | ||
| 39 | extern void tlb_invalidate_all(void); |
41 | extern void tlb_invalidate_all(void); |
| 40 | extern void tlb_invalidate_pages(asid_t asid, uintptr_t va, count_t cnt); |
42 | extern void tlb_invalidate_pages(asid_t asid, uintptr_t va, count_t cnt); |
| - | 43 | ||
| 41 | void test(void) |
44 | void test(void) |
| 42 | { |
45 | { |
| 43 | tlb_entry_t entryi; |
46 | tlb_entry_t entryi; |
| 44 | tlb_entry_t entryd; |
47 | tlb_entry_t entryd; |
| 45 | 48 | ||
| 46 | int i; |
49 | int i; |
| 47 | 50 | ||
| 48 | entryd.word[0] = 0; |
51 | entryd.word[0] = 0; |
| 49 | entryd.word[1] = 0; |
52 | entryd.word[1] = 0; |
| 50 | - | ||
| 51 | entryd.p = true; /* present */ |
- | |
| 52 | entryd.ma = MA_WRITEBACK; |
- | |
| 53 | entryd.a = true; /* already accessed */ |
- | |
| 54 | entryd.d = true; /* already dirty */ |
- | |
| 55 | entryd.pl = PL_KERNEL; |
- | |
| 56 | entryd.ar = AR_READ | AR_WRITE; |
- | |
| 57 | entryd.ppn = 0; |
- | |
| 58 | entryd.ps = PAGE_WIDTH; |
- | |
| 59 | - | ||
| 60 | - | ||
| 61 | entryi.word[0] = 0; |
- | |
| 62 | entryi.word[1] = 0; |
- | |
| 63 | 53 | ||
| 64 | entryi.p = true; /* present */ |
54 | entryd.p = true; /* present */ |
| 65 | entryi.ma = MA_WRITEBACK; |
55 | entryd.ma = MA_WRITEBACK; |
| 66 | entryi.a = true; /* already accessed */ |
56 | entryd.a = true; /* already accessed */ |
| 67 | entryi.d = true; /* already dirty */ |
57 | entryd.d = true; /* already dirty */ |
| 68 | entryi.pl = PL_KERNEL; |
58 | entryd.pl = PL_KERNEL; |
| 69 | entryi.ar = AR_READ | AR_EXECUTE; |
59 | entryd.ar = AR_READ | AR_WRITE; |
| 70 | entryi.ppn = 0; |
60 | entryd.ppn = 0; |
| 71 | entryi.ps = PAGE_WIDTH; |
61 | entryd.ps = PAGE_WIDTH; |
| 72 | - | ||
| 73 | 62 | ||
| 74 | for(i=0;i<100;i++) |
63 | entryi.word[0] = 0; |
| - | 64 | entryi.word[1] = 0; |
|
| - | 65 | ||
| - | 66 | entryi.p = true; /* present */ |
|
| - | 67 | entryi.ma = MA_WRITEBACK; |
|
| - | 68 | entryi.a = true; /* already accessed */ |
|
| - | 69 | entryi.d = true; /* already dirty */ |
|
| - | 70 | entryi.pl = PL_KERNEL; |
|
| - | 71 | entryi.ar = AR_READ | AR_EXECUTE; |
|
| - | 72 | entryi.ppn = 0; |
|
| - | 73 | entryi.ps = PAGE_WIDTH; |
|
| 75 | { |
74 | |
| - | 75 | for (i = 0; i < 100; i++) { |
|
| 76 | itc_mapping_insert(0+i*(1<<PAGE_WIDTH),8,entryi); |
76 | itc_mapping_insert(0 + i * (1 << PAGE_WIDTH), 8, entryi); |
| 77 | dtc_mapping_insert(0+i*(1<<PAGE_WIDTH),9,entryd); |
77 | dtc_mapping_insert(0 + i * (1 << PAGE_WIDTH), 9, entryd); |
| 78 | } |
78 | } |
| 79 | 79 | ||
| 80 | - | ||
| 81 | tlb_invalidate_pages(8,0x0c000,14); |
80 | tlb_invalidate_pages(8,0x0c000,14); |
| 82 | 81 | ||
| 83 | /*tlb_invalidate_all();*/ |
82 | /*tlb_invalidate_all();*/ |
| 84 | - | ||
| 85 | } |
83 | } |
| - | 84 | ||
| - | 85 | #else |
|
| - | 86 | ||
| - | 87 | void test_purge1(void) |
|
| - | 88 | { |
|
| - | 89 | printf("This test is availaible only on IA64 platform.\n"); |
|
| - | 90 | } |
|
| - | 91 | ||
| - | 92 | #endif |
|