1.1 --- a/stage2/entry.S Sun Feb 28 01:18:09 2016 +0100
1.2 +++ b/stage2/entry.S Mon Feb 29 19:09:10 2016 +0100
1.3 @@ -30,7 +30,7 @@
1.4 /* NOTE: Duplicated from cpu.h. */
1.5
1.6 #define page_table_start 0x80040000
1.7 -#define page_table_task_size_log2 15
1.8 +#define page_table_task_size 0x00008000
1.9
1.10 _tlb_entry:
1.11 /* Get the bad address. */
1.12 @@ -54,17 +54,19 @@
1.13 /* Otherwise, load the page table entries. */
1.14
1.15 andi $k1, $k0, 0xff /* ASID */
1.16 - sll $k1, $k1, page_table_task_size_log2 /* [ASID] */
1.17 - li $k0, page_table_start /* page_table */
1.18 - add $k0, $k0, $k1 /* page_table[ASID] */
1.19 + li $k0, page_table_task_size
1.20 + mul $k0, $k0, $k1 /* [ASID] (ASID * page_table_task_size) */
1.21 + li $k1, page_table_start /* page_table */
1.22 + addu $k1, $k0, $k1 /* page_table[ASID] */
1.23
1.24 - mfc0 $k1, $4 /* CP0_CONTEXT */
1.25 + mfc0 $k0, $4 /* CP0_CONTEXT */
1.26 nop
1.27 - srl $k1, $k1, 1 /* use 8 byte - not 16 byte - entries */
1.28 - add $k0, $k0, $k1 /* page_table[ASID][entry] */
1.29 + srl $k0, $k0, 1 /* use 8 byte - not 16 byte - entries */
1.30 + addu $k0, $k0, $k1 /* page_table[ASID][entry] */
1.31
1.32 lw $k1, 0($k0) /* page_table[ASID][entry][0] */
1.33 mtc0 $k1, $2 /* CP0_ENTRYLO0 */
1.34 +
1.35 lw $k1, 4($k0) /* page_table[ASID][entry][1] */
1.36 mtc0 $k1, $3 /* CP0_ENTRYLO1 */
1.37 /* page size is 4KB */