📄 cpu_s.s
字号:
.set reorder
END(CP0_ecc_read)
/*------------------------------------------------------------------------------
UINT32 CP0_cacheerr_read( void )
Read CP0 cacheerr ($27) register
------------------------------------------------------------------------------*/
LEAF(CP0_cacheerr_read)
.set noreorder
MFC0( v0,C0_CACHEERR)
j ra
nop
.set reorder
END(CP0_cacheerr_read)
/*------------------------------------------------------------------------------
UINT32 CP0_taglo0_read( void )
Read CP0 taglo ($28, select 0) register
------------------------------------------------------------------------------*/
LEAF(CP0_taglo0_read)
.set noreorder
MFC0( v0,C0_TAGLO)
j ra
nop
.set reorder
END(CP0_taglo0_read)
/*------------------------------------------------------------------------------
UINT32 CP0_taghi0_read( void )
Read CP0 taghi ($29, select 0) register
------------------------------------------------------------------------------*/
LEAF(CP0_taghi0_read)
.set noreorder
MFC0( v0,C0_TAGHI)
j ra
nop
.set reorder
END(CP0_taghi0_read)
/*------------------------------------------------------------------------------
UINT32 CP0_datalo1_read( void )
Read CP0 datalo ($28, select 1) register, (MIPS32 only !!)
------------------------------------------------------------------------------*/
LEAF(CP0_datalo1_read)
.set noreorder
/*
mfc0 v0,datalo,sel1: decodes to
'sel'-bitfield 2-0 : select 1 = 001
-bitfield 10-3 : fixed = 000 0000 0
'rd' -bitfield 15-11: cp0 datalo (28) = 1110 0
'rt' -bitfield 20-16: cpu v0 (2) = 0 0010
'rs' -bitfield 25-21: rs = 'MF' = 00 000
'op' -bitfield 31-26: cop0 = 0100 00
mfc0 v0,datalo,1 = 0100 0000 0000 0010 1110 0000 0000 0001
*/
/* get datalo-sel-1 into v0 */
.word 0x4002e001
nop
nop
j ra
nop
.set reorder
END(CP0_datalo1_read)
/*------------------------------------------------------------------------------
UINT32 CP0_datahi1_read( void )
Read CP0 datahi ($29, select 1) register, (MIPS32 only !!)
------------------------------------------------------------------------------*/
LEAF(CP0_datahi1_read)
.set noreorder
/*
mfc0 v0,datahi,sel1: decodes to
'sel'-bitfield 2-0 : select 1 = 001
-bitfield 10-3 : fixed = 000 0000 0
'rd' -bitfield 15-11: cp0 datahi (29) = 1110 1
'rt' -bitfield 20-16: cpu v0 (2) = 0 0010
'rs' -bitfield 25-21: rs = 'MF' = 00 000
'op' -bitfield 31-26: cop0 = 0100 00
mfc0 v0,datahi,1 = 0100 0000 0000 0010 1110 1000 0000 0001
*/
/* get datahi-sel-1 into v0 */
.word 0x4002e801
nop
nop
j ra
nop
.set reorder
END(CP0_datahi1_read)
/*------------------------------------------------------------------------------
UINT32 CP0_errorepc_read( void )
Read CP0 errorepc ($30) register
------------------------------------------------------------------------------*/
LEAF(CP0_errorepc_read)
.set noreorder
MFC0( v0,C0_ERROREPC)
j ra
nop
.set reorder
END(CP0_errorepc_read)
/*------------------------------------------------------------------------------
UINT32 CP0_desave_read( void )
Read CP0 desave ($31) register
------------------------------------------------------------------------------*/
LEAF(CP0_desave_read)
.set noreorder
MFC0( v0,C0_DESAVE)
j ra
nop
.set reorder
END(CP0_desave_read)
/*------------------------------------------------------------------------------
void CP0_index_write( UINT32 val )
Write CP0 index ($0) register
------------------------------------------------------------------------------*/
LEAF(CP0_index_write)
.set noreorder
MTC0( a0,C0_INDEX)
j ra
nop
.set reorder
END(CP0_index_write)
/*------------------------------------------------------------------------------
void CP0_entrylo0_write( UINT32 val )
Write CP0 entrylo0 ($2) register
------------------------------------------------------------------------------*/
LEAF(CP0_entrylo0_write)
.set noreorder
MTC0( a0,C0_ENTRYLO0)
j ra
nop
.set reorder
END(CP0_entrylo0_write)
/*------------------------------------------------------------------------------
void CP0_entrylo1_write( UINT32 val )
Write CP0 entrylo1 ($3) register
------------------------------------------------------------------------------*/
LEAF(CP0_entrylo1_write)
.set noreorder
MTC0( a0,C0_ENTRYLO1)
j ra
nop
.set reorder
END(CP0_entrylo1_write)
/*------------------------------------------------------------------------------
void CP0_context_write( UINT32 val )
Write CP0 context ($4) register
------------------------------------------------------------------------------*/
LEAF(CP0_context_write)
.set noreorder
MTC0( a0,C0_CONTEXT)
j ra
nop
.set reorder
END(CP0_context_write)
/*------------------------------------------------------------------------------
void CP0_pagemask_write( UINT32 val )
Write CP0 pagemask ($5) register
------------------------------------------------------------------------------*/
LEAF(CP0_pagemask_write)
.set noreorder
MTC0( a0,C0_PAGEMASK)
j ra
nop
.set reorder
END(CP0_pagemask_write)
/*------------------------------------------------------------------------------
void CP0_wired_write( UINT32 val )
Write CP0 wired ($6) register
------------------------------------------------------------------------------*/
LEAF(CP0_wired_write)
.set noreorder
MTC0( a0,C0_WIRED)
j ra
nop
.set reorder
END(CP0_wired_write)
/*------------------------------------------------------------------------------
void CP0_count_write( UINT32 val )
Write CP0 count ($9) register
------------------------------------------------------------------------------*/
LEAF(CP0_count_write)
.set noreorder
MTC0( a0,C0_COUNT)
j ra
nop
.set reorder
END(CP0_count_write)
/*------------------------------------------------------------------------------
void CP0_entryhi_write( UINT32 val )
Write CP0 entryhi ($10) register
------------------------------------------------------------------------------*/
LEAF(CP0_entryhi_write)
.set noreorder
MTC0( a0,C0_ENTRYHI)
j ra
nop
.set reorder
END(CP0_entryhi_write)
/*------------------------------------------------------------------------------
void CP0_compare_write( UINT32 val )
Write CP0 compare ($11) register
------------------------------------------------------------------------------*/
LEAF(CP0_compare_write)
.set noreorder
MTC0( a0,C0_COMPARE)
j ra
nop
.set reorder
END(CP0_compare_write)
/*------------------------------------------------------------------------------
void CP0_status_write( UINT32 val )
Write CP0 status ($12) register
------------------------------------------------------------------------------*/
LEAF(CP0_status_write)
.set noreorder
MTC0( a0,C0_STATUS)
j ra
nop
.set reorder
END(CP0_status_write)
/*------------------------------------------------------------------------------
void CP0_cause_write( UINT32 val )
Write CP0 cause ($13) register
------------------------------------------------------------------------------*/
LEAF(CP0_cause_write)
.set noreorder
MTC0( a0,C0_CAUSE)
j ra
nop
.set reorder
END(CP0_cause_write)
/*------------------------------------------------------------------------------
void CP0_epc_write( UINT32 val )
Write CP0 epc ($14) register
------------------------------------------------------------------------------*/
LEAF(CP0_epc_write)
.set noreorder
MTC0( a0,C0_EPC)
j ra
nop
.set reorder
END(CP0_epc_write)
/*------------------------------------------------------------------------------
void CP0_config_write( UINT32 val )
Write CP0 config ($16) register
------------------------------------------------------------------------------*/
LEAF(CP0_config_write)
.set noreorder
MTC0( a0,C0_CONFIG)
j ra
nop
.set reorder
END(CP0_config_write)
/*------------------------------------------------------------------------------
void CP0_watchlo_write( UINT32 val )
Write CP0 watchlo ($18) register
------------------------------------------------------------------------------*/
LEAF(CP0_watchlo_write)
.set noreorder
MTC0( a0,C0_WATCHLO)
j ra
nop
.set reorder
END(CP0_watchlo_write)
/*------------------------------------------------------------------------------
void CP0_watchhi_write( UINT32 val )
Write CP0 watchhi ($19) register
------------------------------------------------------------------------------*/
LEAF(CP0_watchhi_write)
.set noreorder
MTC0( a0,C0_WATCHHI)
j ra
nop
.set reorder
END(CP0_watchhi_write)
/*------------------------------------------------------------------------------
void CP0_debug_write( UINT32 val )
Write CP0 debug ($23) register (MIPS32 only !!)
------------------------------------------------------------------------------*/
LEAF(CP0_debug_write)
.set noreorder
MTC0( a0,C0_DEBUG)
j ra
nop
.set reorder
END(CP0_debug_write)
/*------------------------------------------------------------------------------
void CP0_depc_write( UINT32 val )
Write CP0 depc ($24) register (MIPS32 only !!)
------------------------------------------------------------------------------*/
LEAF(CP0_depc_write)
.set noreorder
MTC0( a0,C0_DEPC)
j ra
nop
.set reorder
END(CP0_depc_write)
/*------------------------------------------------------------------------------
void CP0_perfcount_write( UINT32 val )
Write CP0 perfcount ($25) register (MIPS32 only !!)
------------------------------------------------------------------------------*/
LEAF(CP0_perfcount_write)
.set noreorder
MTC0( a0,C0_PERFCNT)
j ra
nop
.set reorder
END(CP0_perfcount_write)
/*------------------------------------------------------------------------------
void CP0_ecc_write( UINT32 val )
Write CP0 ecc ($26) register
------------------------------------------------------------------------------*/
LEAF(CP0_ecc_write)
.set noreorder
MTC0( a0,C0_ERRCTL)
j ra
nop
.set reorder
END(CP0_ecc_write)
/*------------------------------------------------------------------------------
void CP0_taglo0_write( UINT32 val )
Write CP0 taglo ($28, select 0) register
------------------------------------------------------------------------------*/
LEAF(CP0_taglo0_write)
.set noreorder
MTC0( a0,C0_TAGLO)
j ra
nop
.set reorder
END(CP0_taglo0_write)
/*------------------------------------------------------------------------------
void CP0_taghi0_write( UINT32 val )
Write CP0 taghi ($29, select 0) register
------------------------------------------------------------------------------*/
LEAF(CP0_taghi0_write)
.set noreorder
MTC0( a0,C0_TAGHI)
j ra
nop
.set reorder
END(CP0_taghi0_write)
/*------------------------------------------------------------------------------
void CP0_errorepc_write( UINT32 val )
Write CP0 errorepc ($30) register
------------------------------------------------------------------------------*/
LEAF(CP0_errorepc_write)
.set noreorder
MTC0( a0,C0_ERROREPC)
j ra
nop
.set reorder
END(CP0_errorepc_write)
/*------------------------------------------------------------------------------
void CP0_desave_write( UINT32 val )
Write CP0 desave ($31) register
------------------------------------------------------------------------------*/
LEAF(CP0_desave_write)
.set noreorder
MTC0( a0,C0_DESAVE)
j ra
nop
.set reorder
END(CP0_desave_write)
/*------------------------------------------------------------------------------
/************************************************************************
* Implementation : Static functions
************************************************************************/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -