📄 cp0supp.s
字号:
/************************************************************* * File: lib/cp0supp.s * Purpose: Part of C runtime library * Author: Phil Bunce (pjb@carmel.com) * Revision History: * 970304 Start of revision history * 970421 Corrected comment describing mtc0 * 970910 Added code to make mtc0 use kseg1 if it was called from kseg1 */#include "mips.h"/*** Support for coprocessor 0**** value = mfc0(reg)** mtc0(reg,value)*/ .datamfc0L: .word mfc00, mfc01, mfc02, mfc03, mfc04, mfc05, mfc06, mfc07 .word mfc08, mfc09, mfc010, mfc011, mfc012, mfc013, mfc014 .word mfc015, mfc016, mfc017, mfc018, mfc019, mfc020, mfc021 .word mfc022, mfc023, mfc024, mfc025, mfc026, mfc027, mfc028 .word mfc029, mfc030, mfc031 .text .globl std_mfc0 .ent std_mfc0std_mfc0: # value = mfc0(reg) la t0,mfc0L sll a0,2 addu a0,t0 lw t0,(a0) j t0 .set noreordermfc00: mfc0 v0,$0; nop; b 1f; nopmfc01: mfc0 v0,$1; nop; b 1f; nopmfc02: mfc0 v0,$2; nop; b 1f; nopmfc03: mfc0 v0,$3; nop; b 1f; nopmfc04: mfc0 v0,$4; nop; b 1f; nopmfc05: mfc0 v0,$5; nop; b 1f; nopmfc06: mfc0 v0,$6; nop; b 1f; nopmfc07: mfc0 v0,$7; nop; b 1f; nopmfc08: mfc0 v0,$8; nop; b 1f; nopmfc09: mfc0 v0,$9; nop; b 1f; nopmfc010: mfc0 v0,$10; nop; b 1f; nopmfc011: mfc0 v0,$11; nop; b 1f; nopmfc012: mfc0 v0,$12; nop; b 1f; nopmfc013: mfc0 v0,$13; nop; b 1f; nopmfc014: mfc0 v0,$14; nop; b 1f; nopmfc015: mfc0 v0,$15; nop; b 1f; nopmfc016: mfc0 v0,$16; nop; b 1f; nopmfc017: mfc0 v0,$17; nop; b 1f; nopmfc018: mfc0 v0,$18; nop; b 1f; nopmfc019: mfc0 v0,$19; nop; b 1f; nopmfc020: mfc0 v0,$20; nop; b 1f; nopmfc021: mfc0 v0,$21; nop; b 1f; nopmfc022: mfc0 v0,$22; nop; b 1f; nopmfc023: mfc0 v0,$23; nop; b 1f; nopmfc024: mfc0 v0,$24; nop; b 1f; nopmfc025: mfc0 v0,$25; nop; b 1f; nopmfc026: mfc0 v0,$26; nop; b 1f; nopmfc027: mfc0 v0,$27; nop; b 1f; nopmfc028: mfc0 v0,$28; nop; b 1f; nopmfc029: mfc0 v0,$29; nop; b 1f; nopmfc030: mfc0 v0,$30; nop; b 1f; nopmfc031: mfc0 v0,$31; nop .set reorder1: j ra .end std_mfc0 .datamtc0L: .word mtc00, mtc01, mtc02, mtc03, mtc04, mtc05, mtc06, mtc07 .word mtc08, mtc09, mtc010, mtc011, mtc012, mtc013, mtc014 .word mtc015, mtc016, mtc017, mtc018, mtc019, mtc020, mtc021 .word mtc022, mtc023, mtc024, mtc025, mtc026, mtc027, mtc028 .word mtc029, mtc030, mtc031 .text .globl std_mtc0 .ent std_mtc0 /* 970910 If this function is called from kseg1, it will use kseg1 * for the mtc0 instruction. */std_mtc0: # mtc0(reg,value) la t0,mtc0L sll a0,2 addu a0,t0 lw t0,(a0) la t1,1f 1: sll t1,2 bgez t1,1f or t0,K1BASE 1: j t0 .set noreordermtc00: mtc0 a1,$0; b 1f; nopmtc01: mtc0 a1,$1; b 1f; nopmtc02: mtc0 a1,$2; b 1f; nopmtc03: mtc0 a1,$3; b 1f; nopmtc04: mtc0 a1,$4; b 1f; nopmtc05: mtc0 a1,$5; b 1f; nopmtc06: mtc0 a1,$6; b 1f; nopmtc07: mtc0 a1,$7; b 1f; nopmtc08: mtc0 a1,$8; b 1f; nopmtc09: mtc0 a1,$9; b 1f; nopmtc010: mtc0 a1,$10; b 1f; nopmtc011: mtc0 a1,$11; b 1f; nopmtc012: mtc0 a1,$12; b 1f; nopmtc013: mtc0 a1,$13; b 1f; nopmtc014: mtc0 a1,$14; b 1f; nopmtc015: mtc0 a1,$15; b 1f; nopmtc016: mtc0 a1,$16; b 1f; nopmtc017: mtc0 a1,$17; b 1f; nopmtc018: mtc0 a1,$18; b 1f; nopmtc019: mtc0 a1,$19; b 1f; nopmtc020: mtc0 a1,$20; b 1f; nopmtc021: mtc0 a1,$21; b 1f; nopmtc022: mtc0 a1,$22; b 1f; nopmtc023: mtc0 a1,$23; b 1f; nopmtc024: mtc0 a1,$24; b 1f; nopmtc025: mtc0 a1,$25; b 1f; nopmtc026: mtc0 a1,$26; b 1f; nopmtc027: mtc0 a1,$27; b 1f; nopmtc028: mtc0 a1,$28; b 1f; nopmtc029: mtc0 a1,$29; b 1f; nopmtc030: mtc0 a1,$30; b 1f; nopmtc031: mtc0 a1,$31 .set reorder1: j ra .end std_mtc0 .set noreorder nop
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -