- Timestamp:
- 2005-07-15T21:57:30Z (20 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- b4a4c5e3
- Parents:
- e41c47e
- Location:
- arch/mips
- Files:
-
- 9 edited
Legend:
- Unmodified
- Added
- Removed
-
arch/mips/_link.ld
re41c47e r76cec1e 32 32 . = ABSOLUTE(hardcoded_ktext_size); 33 33 .patch_1 : { 34 34 LONG(ktext_end - ktext_start); 35 35 } 36 36 37 37 . = ABSOLUTE(hardcoded_kdata_size); 38 38 .patch_2 : { 39 39 LONG(kdata_end - kdata_start); 40 40 } 41 41 42 42 . = ABSOLUTE(hardcoded_load_address); 43 43 .patch_3 : { 44 44 LONG(0x80000000); 45 45 } 46 46 -
arch/mips/boot/boot.s
re41c47e r76cec1e 36 36 # move 0x80000000 to reg $8 37 37 lui $8, 0x8000 38 38 39 39 # prepare stack 40 40 lui $29, 0x8100 41 41 42 42 j $8 43 43 nop -
arch/mips/include/context.h
re41c47e r76cec1e 36 36 37 37 struct context { 38 39 40 41 __u32 r3; 42 43 44 45 __u32 r7; 46 47 48 49 __u32 r11; 50 51 52 53 __u32 r15; 54 55 56 57 __u32 r19; 58 59 60 61 __u32 r23; 62 63 64 65 __u32 r27; 66 67 68 69 70 38 __u32 r0; 39 __u32 r1; 40 __u32 r2; 41 __u32 r3; 42 __u32 r4; 43 __u32 r5; 44 __u32 r6; 45 __u32 r7; 46 __u32 r8; 47 __u32 r9; 48 __u32 r10; 49 __u32 r11; 50 __u32 r12; 51 __u32 r13; 52 __u32 r14; 53 __u32 r15; 54 __u32 r16; 55 __u32 r17; 56 __u32 r18; 57 __u32 r19; 58 __u32 r20; 59 __u32 r21; 60 __u32 r22; 61 __u32 r23; 62 __u32 r24; 63 __u32 r25; 64 __u32 r26; 65 __u32 r27; 66 __u32 r28; 67 __u32 sp; 68 __u32 r30; 69 __u32 pc; 70 __u32 pri; 71 71 }; 72 72 -
arch/mips/include/cpu.h
re41c47e r76cec1e 35 35 36 36 struct cpu_arch { 37 38 37 int imp_num; 38 int rev_num; 39 39 }; 40 40 -
arch/mips/include/mm/page.h
re41c47e r76cec1e 60 60 #define PTL3_INDEX_ARCH(vaddr) (((vaddr)>>14)&0xfff) 61 61 62 #define GET_PTL0_ADDRESS_ARCH() 62 #define GET_PTL0_ADDRESS_ARCH() (PTL0) 63 63 #define SET_PTL0_ADDRESS_ARCH(ptl0) (PTL0 = (pte_t *)(ptl0)) 64 64 65 #define GET_PTL1_ADDRESS_ARCH(ptl0, i) 66 #define GET_PTL2_ADDRESS_ARCH(ptl1, i) 67 #define GET_PTL3_ADDRESS_ARCH(ptl2, i) 68 #define GET_FRAME_ADDRESS_ARCH(ptl3, i) 65 #define GET_PTL1_ADDRESS_ARCH(ptl0, i) (((pte_t *)(ptl0))[(i)].pfn<<14) 66 #define GET_PTL2_ADDRESS_ARCH(ptl1, i) (ptl1) 67 #define GET_PTL3_ADDRESS_ARCH(ptl2, i) (ptl2) 68 #define GET_FRAME_ADDRESS_ARCH(ptl3, i) (((pte_t *)(ptl3))[(i)].pfn<<14) 69 69 70 70 #define SET_PTL1_ADDRESS_ARCH(ptl0, i, a) (((pte_t *)(ptl0))[(i)].pfn = (a)>>14) … … 73 73 #define SET_FRAME_ADDRESS_ARCH(ptl3, i, a) (((pte_t *)(ptl3))[(i)].pfn = (a)>>14) 74 74 75 #define GET_PTL1_FLAGS_ARCH(ptl0, i) 76 #define GET_PTL2_FLAGS_ARCH(ptl1, i) 77 #define GET_PTL3_FLAGS_ARCH(ptl2, i) 78 #define GET_FRAME_FLAGS_ARCH(ptl3, i) 75 #define GET_PTL1_FLAGS_ARCH(ptl0, i) get_pt_flags((pte_t *)(ptl0), (index_t)(i)) 76 #define GET_PTL2_FLAGS_ARCH(ptl1, i) PAGE_PRESENT 77 #define GET_PTL3_FLAGS_ARCH(ptl2, i) PAGE_PRESENT 78 #define GET_FRAME_FLAGS_ARCH(ptl3, i) get_pt_flags((pte_t *)(ptl3), (index_t)(i)) 79 79 80 80 #define SET_PTL1_FLAGS_ARCH(ptl0, i, x) set_pt_flags((pte_t *)(ptl0), (index_t)(i), (x)) -
arch/mips/src/cpu/cpu.c
re41c47e r76cec1e 40 40 char *model; 41 41 } imp_data[] = { 42 43 { "MIPS", "R2000" },/* 0x01 */44 { "MIPS", "R3000" },/* 0x02 */45 { "MIPS", "R6000" },/* 0x03 */46 { "MIPS", " R4000/R4400" },/* 0x04 */47 48 { "MIPS", "R6000A" },/* 0x06 */49 { "IDT", "3051/3052" },/* 0x07 */50 51 52 { "MIPS", "R4200" },/* 0x0a */53 54 55 56 57 58 { "MIPS", "R8000" },/* 0x10 */59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 { "Sony", "R3000" },/* 0x21 */76 { "Toshiba", "R3000" },/* 0x22 */77 42 { "Invalid", "Invalid" }, /* 0x00 */ 43 { "MIPS", "R2000" }, /* 0x01 */ 44 { "MIPS", "R3000" }, /* 0x02 */ 45 { "MIPS", "R6000" }, /* 0x03 */ 46 { "MIPS", " R4000/R4400" }, /* 0x04 */ 47 { "LSI Logic", "R3000" }, /* 0x05 */ 48 { "MIPS", "R6000A" }, /* 0x06 */ 49 { "IDT", "3051/3052" }, /* 0x07 */ 50 { "Invalid", "Invalid" }, /* 0x08 */ 51 { "MIPS", "R10000/T5" }, /* 0x09 */ 52 { "MIPS", "R4200" }, /* 0x0a */ 53 { "Unknown", "Unknown" }, /* 0x0b */ 54 { "Unknown", "Unknown" }, /* 0x0c */ 55 { "Invalid", "Invalid" }, /* 0x0d */ 56 { "Invalid", "Invalid" }, /* 0x0e */ 57 { "Invalid", "Invalid" }, /* 0x0f */ 58 { "MIPS", "R8000" }, /* 0x10 */ 59 { "Invalid", "Invalid" }, /* 0x11 */ 60 { "Invalid", "Invalid" }, /* 0x12 */ 61 { "Invalid", "Invalid" }, /* 0x13 */ 62 { "Invalid", "Invalid" }, /* 0x14 */ 63 { "Invalid", "Invalid" }, /* 0x15 */ 64 { "Invalid", "Invalid" }, /* 0x16 */ 65 { "Invalid", "Invalid" }, /* 0x17 */ 66 { "Invalid", "Invalid" }, /* 0x18 */ 67 { "Invalid", "Invalid" }, /* 0x19 */ 68 { "Invalid", "Invalid" }, /* 0x1a */ 69 { "Invalid", "Invalid" }, /* 0x1b */ 70 { "Invalid", "Invalid" }, /* 0x1c */ 71 { "Invalid", "Invalid" }, /* 0x1d */ 72 { "Invalid", "Invalid" }, /* 0x1e */ 73 { "Invalid", "Invalid" }, /* 0x1f */ 74 { "QED", "R4600" }, /* 0x20 */ 75 { "Sony", "R3000" }, /* 0x21 */ 76 { "Toshiba", "R3000" }, /* 0x22 */ 77 { "NKK", "R3000" } /* 0x23 */ 78 78 }; 79 79 -
arch/mips/src/interrupt.c
re41c47e r76cec1e 36 36 pri_t cpu_priority_high(void) 37 37 { 38 39 40 38 pri_t pri = (pri_t) cp0_status_read(); 39 cp0_status_write(pri & ~cp0_status_ie_enabled_bit); 40 return pri; 41 41 } 42 42 43 43 pri_t cpu_priority_low(void) 44 44 { 45 46 47 45 pri_t pri = (pri_t) cp0_status_read(); 46 cp0_status_write(pri | cp0_status_ie_enabled_bit); 47 return pri; 48 48 } 49 49 50 50 void cpu_priority_restore(pri_t pri) 51 51 { 52 52 cp0_status_write(cp0_status_read() | (pri & cp0_status_ie_enabled_bit)); 53 53 } 54 54 55 55 pri_t cpu_priority_read(void) 56 56 { 57 57 return cp0_status_read(); 58 58 } 59 59 … … 85 85 case 7: /* Timer Interrupt */ 86 86 cp0_compare_write(cp0_compare_value); /* clear timer interrupt */ 87 88 cp0_count_write(0); 87 /* start counting over again */ 88 cp0_count_write(0); 89 89 clock(); 90 90 break; -
arch/mips/src/mips.c
re41c47e r76cec1e 38 38 */ 39 39 cp0_status_write(cp0_status_read() & ~(cp0_status_bev_bootstrap_bit|cp0_status_erl_error_bit)); 40 40 41 41 /* 42 42 * Unmask hardware clock interrupt. 43 43 */ 44 44 cp0_status_write(cp0_status_read() | (1<<cp0_status_im7_shift)); 45 45 46 46 /* 47 47 * Start hardware clock. -
arch/mips/src/start.S
re41c47e r76cec1e 52 52 j cache_error_handler 53 53 nop 54 54 55 55 .org 0x180 56 56 exception_entry: … … 58 58 sub $29, STACK_SPACE 59 59 REGISTERS_STORE $29 60 60 61 61 jal exception 62 62 nop 63 63 64 64 REGISTERS_LOAD $29 65 65 add $29, STACK_SPACE … … 70 70 sub $29, STACK_SPACE 71 71 REGISTERS_STORE $29 72 72 73 73 jal tlb_refill 74 74 nop 75 75 76 76 REGISTERS_LOAD $29 77 77 add $29, STACK_SPACE 78 78 79 79 eret 80 80 … … 85 85 jal cache_error 86 86 nop 87 87 88 88 REGISTERS_LOAD $29 89 89 add $29, STACK_SPACE
Note:
See TracChangeset
for help on using the changeset viewer.