📄 ppclib.s
字号:
#-------------------------------------------------------------------------------# Function: ppcMtgpr28# Description: Move to gpr28# Input: none# Output: gpr28=r3#------------------------------------------------------------------------------- .text .align 2 .globl ppcMtgpr28ppcMtgpr28: ori r28,r3,0x0000 blr .type ppcMtgpr28,@function .size ppcMtgpr28,.-ppcMtgpr28#-------------------------------------------------------------------------------# Function: ppcMtgpr29# Description: Move to gpr29# Input: none# Output: gpr29=r3#------------------------------------------------------------------------------- .text .align 2 .globl ppcMtgpr29ppcMtgpr29: ori r29,r3,0x0000 blr .type ppcMtgpr29,@function .size ppcMtgpr29,.-ppcMtgpr29#-------------------------------------------------------------------------------# Function: ppcMtgpr30# Description: Move to gpr30# Input: none# Output: gpr30=r3#------------------------------------------------------------------------------- .text .align 2 .globl ppcMtgpr30ppcMtgpr30: ori r30,r3,0x0000 blr .type ppcMtgpr30,@function .size ppcMtgpr30,.-ppcMtgpr30#-------------------------------------------------------------------------------# Function: ppcMtgpr31# Description: Move to gpr31# Input: none# Output: gpr31=r3#------------------------------------------------------------------------------- .text .align 2 .globl ppcMtgpr31ppcMtgpr31: ori r31,r3,0x0000 blr .type ppcMtgpr31,@function .size ppcMtgpr31,.-ppcMtgpr31#-------------------------------------------------------------------------------# Function: ppcMfuart0iir# Description: Move from uart0 reg. # Input: none# Output: r3=uart0(iir)#------------------------------------------------------------------------------- .text .align 2 .globl ppcMfuart0iirppcMfuart0iir: addis r6,r0,0x0302 ori r6,r6,0xef60 stw r3,0(r6) blr .type ppcMfuart0iir,@function .size ppcMfuart0iir,.-ppcMfuart0iir#-------------------------------------------------------------------------------# Function: ppcMfuart1iir# Description: Move from uart1 reg.# Input: none# Output: r3=uart1(iir)#------------------------------------------------------------------------------- .text .align 2 .globl ppcMfuart1iirppcMfuart1iir: addis r6,r0,0x0402 ori r6,r6,0xef60 stw r3,0(r6) blr .type ppcMfuart1iir,@function .size ppcMfuart1iir,.-ppcMfuart1iir#------------------------------------------------------------------------------# Function: ppcMfem0mr0# Description: Move from mode register 0.# Input: none# Output: r3= mode reg0#------------------------------------------------------------------------------ .text .align 2 .globl ppcMfem0mr0ppcMfem0mr0: addis r4,0,EMAC_BASE@h ori r4,r4,EMAC_BASE@l lwz r3,0(r4) blr .type ppcMfem0mr0,@function .size ppcMfem0mr0,.-ppcMfem0mr0#------------------------------------------------------------------------------# Function: ppcMfiic0mdbuf# Description: Move from iic0 master data buffer.# Input: none# Output: r3=iic0mdbuf #------------------------------------------------------------------------------ .text .align 2 .globl ppcMfiic0mdbufppcMfiic0mdbuf: addis r4,0,IIC_MASTER_ADDR@h ori r4,r4,IIC_MASTER_ADDR@l lwz r3,0(r4) blr .type ppcMfiic0mdbuf,@function .size ppcMfiic0mdbuf,.-ppcMfiic0mdbuf#------------------------------------------------------------------------------# Function: ppcMfgpo# Description: Move from gpio output register.# Input: none# Output: r3=gpo#------------------------------------------------------------------------------ .text .align 2 .globl ppcMfgpoppcMfgpo: addis r4,0,GPIO_BASE@h ori r4,r4,GPIO_BASE@l lwz r3,0(r4) blr .type ppcMfgpo,@function .size ppcMfgpo,.-ppcMfgpo#------------------------------------------------------------------------------# Function: ppcMfpb1ap# Description: Move from peripheral bank1 access reg.# Input: none# Output: r3=pb1ap#------------------------------------------------------------------------------ .text .align 2 .globl ppcMfpb1apppcMfpb1ap: addi r4,0,pb1ap ##pb1ap configuration mtdcr ebccfga,r4 ori r3,0,ebccfgd blr .type ppcMfpb1ap,@function .size ppcMfpb1ap,.-ppcMfpb1ap#-------------------------------------------------------------------------------# Function: ppcMt_gpr8# Description: Move to (@gpr8);gpr8 is having addr, mov r3 to addr# Input: none# Output: (@gpr8)=r3#------------------------------------------------------------------------------- .text .align 2 .globl ppcMt_gpr8ppcMt_gpr8: stw r3,0(r8) blr .type ppcMt_gpr8,@function .size ppcMt_gpr8,.-ppcMt_gpr8#-------------------------------------------------------------------------------# Function: ppcMt_gpr9# Description: Move to @gpr9# Input: none# Output: @gpr9=r3#------------------------------------------------------------------------------- .text .align 2 .globl ppcMt_gpr9ppcMt_gpr9: stw r3,0(r9) blr .type ppcMt_gpr9,@function .size ppcMt_gpr9,.-ppcMt_gpr9#-------------------------------------------------------------------------------# Function: ppcMf_gpr8# Description: Move From @gpr8# Input: none# Output: r3 = @gpr8#------------------------------------------------------------------------------- .text .align 2 .globl ppcMf_gpr8ppcMf_gpr8: lwz r3,0(r8) blr .type ppcMf_gpr8,@function .size ppcMf_gpr8,.-ppcMf_gpr8#-------------------------------------------------------------------------------# Function: ppcMf_gpr9# Description: Move From @gpr9# Input: none# Output: r3 = @gpr9#------------------------------------------------------------------------------- .text .align 2 .globl ppcMf_gpr9ppcMf_gpr9: lwz r3,0(r9) blr .type ppcMf_gpr9,@function .size ppcMf_gpr9,.-ppcMf_gpr9#-----------------------------------------------------------------------------# Function: ppcMftcr# Description: Move from TCR register# Input: none.# Output: r3 = contents of TCR register#----------------------------------------------------------------------------- .text .align 2 .globl ppcMftcrppcMftcr: mftcr r3 blr .type ppcMftcr,@function .size ppcMftcr,.-ppcMftcr#-----------------------------------------------------------------------------# Function: ppcMttcr# Description: Move to TCR register# Input: r3 - new value of TCR.# Output: none#----------------------------------------------------------------------------- .text .align 2 .globl ppcMttcrppcMttcr: mttcr r3 blr .type ppcMttcr,@function .size ppcMttcr,.-ppcMttcr#-----------------------------------------------------------------------------# Function: ppcMftsr# Description: Move from TSR register# Input: none.# Output: r3 = contents of TSR register#----------------------------------------------------------------------------- .text .align 2 .globl ppcMftsrppcMftsr: mftsr r3 blr .type ppcMftsr,@function .size ppcMftsr,.-ppcMftsr#-----------------------------------------------------------------------------# Function: ppcMttsr# Description: Move to TSR register# Input: r3 - new value of TSR.# Output: none#----------------------------------------------------------------------------- .text .align 2 .globl ppcMttsrppcMttsr: mttsr r3 blr .type ppcMttsr,@function .size ppcMttsr,.-ppcMttsr #-------------------------------------------------------------------------------# Function: ppcMfbear# Description: Move from BEAR register# Input: none# Output: r3 - value of BEAR.#------------------------------------------------------------------------------- .text .align 2 .globl ppcMfbearppcMfbear: addi r4,r0,mem_bear mtdcr memcfga,r4 mfdcr r3,memcfgd nop nop nop blr .type ppcMfbear,@function .size ppcMfbear,.-ppcMfbear#-------------------------------------------------------------------------------# Function: ppcMtbear# Description: Move to BEAR register# Input: r3 - new value of BEAR.# Output: none#------------------------------------------------------------------------------- .text .align 2 .globl ppcMtbearppcMtbear: addi r4,r0,mem_bear mtdcr memcfga,r4 mtdcr memcfgd,r3#ifdef PASS2_405GP nop nop nop#endif blr .type ppcMtbear,@function .size ppcMtbear,.-ppcMtbear#-----------------------------------------------------------------------------# Function: ppcMfpit# Description: Move from PIT register# Input: none # Output: r3 - value of PIT.#----------------------------------------------------------------------------- .text .align 2 .globl ppcMfpitppcMfpit: mfpit r3 blr .type ppcMfpit,@function .size ppcMfpit,.-ppcMfpit#-----------------------------------------------------------------------------# Function: ppcMtpit# Description: Move to PIT register# Input: r3 - new value of PIT.# Output: none#----------------------------------------------------------------------------- .text .align 2 .globl ppcMtpitppcMtpit: mtpit r3 blr .type ppcMtpit,@function .size ppcMtpit,.-ppcMtpit#************************************************************************# Jump to the start the address in r3 *# *# CALL BY: jump_to_func(start_address); *# uint32 start_address; address to jump to *# ON EXIT: Doesn't return *# *#************************************************************************ .align 2 .globl jump_to_funcjump_to_func: stwu r1,-4(r1) mfspr r0,8 # Load the return address(LR) in R0 stw r0,4(r1) # Store the return address on the stack mtspr 8,r3 # Load the address into Link Register bclrl 20,0 lwz r0,4(r1) # Get return address into R0 mtspr 8,r0 # Put return address into Link Register addi r1,r1,4 # Update the stack pointer blr#-------------------------------------------------------------------------------# Function: ppcMtchcr0# Description: Move to Chip control register 0# Input: r3 - new value of CHCR0.# Output: none#------------------------------------------------------------------------------- .text .align 2 .globl ppcMtchcr0ppcMtchcr0: mtdcr chcr0,r3 nop nop nop blr .type ppcMtchcr0,@function .size ppcMtchcr0,.-ppcMtchcr0#-------------------------------------------------------------------------------# Function: ppcMtpb2ap# Description: Move to Peripheral Bank 2 Access Parameters# Input: r3 - new value of PB2AP# Output: none#------------------------------------------------------------------------------- .text .align 2 .globl ppcMtpb2apppcMtpb2ap: addi r4,0,pb2ap mtdcr ebccfga,r4 mtdcr ebccfgd,r3 blr .type ppcMtpb2ap,@function .size ppcMtpb2ap,.-ppcMtpb2ap#-------------------------------------------------------------------------------# Function: ppcMtpb2cr# Description: Move to Peripheral Bank 2 Configuration Registers# Input: r3 - new value of PB2CR# Output: none#------------------------------------------------------------------------------- .text .align 2 .globl ppcMtpb2crppcMtpb2cr: addi r4,0,pb2cr mtdcr ebccfga,r4 mtdcr ebccfgd,r3 blr .type ppcMtpb2cr,@function .size ppcMtpb2cr,.-ppcMtpb2cr#-------------------------------------------------------------------------------# Function: restartPPC# Description: Restart the system by forcing a watchdog timer reset# Input: none# Output: none#------------------------------------------------------------------------------- .text .align 2 .globl restartPPCrestartPPC: addis r3,0,0x3000 # Init TCR to WP = 2^17 clks, force sys reset, all ints disabled ori r3,r3,0 mtspr tcr,r3wd_loop: b wd_loop # Loop endlessly until the wdt resets the system .type restartPPC,@function .size restartPPC,.-restartPPC
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -