⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 cpu_s.s

📁 MIPS下的boottloader yamon 的源代码
💻 S
📖 第 1 页 / 共 3 页
字号:
    .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 + -