first commit
This commit is contained in:
88
Lib/asm/DSP28xxx_SectionCopy_nonBIOS.asm
Normal file
88
Lib/asm/DSP28xxx_SectionCopy_nonBIOS.asm
Normal file
@@ -0,0 +1,88 @@
|
||||
;############################################################################
|
||||
;
|
||||
; FILE: DSP28xxx_SectionCopy_nonBIOS.asm
|
||||
;
|
||||
; DESCRIPTION: Provides functionality for copying intialized sections from
|
||||
; flash to ram at runtime before entering the _c_int00 startup
|
||||
; routine
|
||||
;############################################################################
|
||||
; Author: Tim Love
|
||||
; Release Date: March 2008
|
||||
;############################################################################
|
||||
|
||||
|
||||
.ref _c_int00
|
||||
.global copy_sections
|
||||
.global _cinit_loadstart, _cinit_runstart, _cinit_size
|
||||
.global _const_loadstart, _const_runstart, _const_size
|
||||
.global _econst_loadstart, _econst_runstart, _econst_size
|
||||
.global _pinit_loadstart, _pinit_runstart, _pinit_size
|
||||
.global _switch_loadstart, _switch_runstart, _switch_size
|
||||
.global _text_loadstart, _text_runstart, _text_size
|
||||
|
||||
***********************************************************************
|
||||
* Function: copy_sections
|
||||
*
|
||||
* Description: Copies initialized sections from flash to ram
|
||||
***********************************************************************
|
||||
|
||||
.sect "copysections"
|
||||
|
||||
copy_sections:
|
||||
|
||||
|
||||
MOVL XAR5,#_cinit_size ; Store Section Size in XAR5
|
||||
MOVL ACC,@XAR5 ; Move Section Size to ACC
|
||||
MOVL XAR6,#_cinit_loadstart ; Store Load Starting Address in XAR6
|
||||
MOVL XAR7,#_cinit_runstart ; Store Run Address in XAR7
|
||||
LCR copy ; Branch to Copy
|
||||
|
||||
MOVL XAR5,#_const_size ; Store Section Size in XAR5
|
||||
MOVL ACC,@XAR5 ; Move Section Size to ACC
|
||||
MOVL XAR6,#_const_loadstart ; Store Load Starting Address in XAR6
|
||||
MOVL XAR7,#_const_runstart ; Store Run Address in XAR7
|
||||
LCR copy ; Branch to Copy
|
||||
|
||||
MOVL XAR5,#_econst_size ; Store Section Size in XAR5
|
||||
MOVL ACC,@XAR5 ; Move Section Size to ACC
|
||||
MOVL XAR6,#_econst_loadstart ; Store Load Starting Address in XAR6
|
||||
MOVL XAR7,#_econst_runstart ; Store Run Address in XAR7
|
||||
LCR copy ; Branch to Copy
|
||||
|
||||
MOVL XAR5,#_pinit_size ; Store Section Size in XAR5
|
||||
MOVL ACC,@XAR5 ; Move Section Size to ACC
|
||||
MOVL XAR6,#_pinit_loadstart ; Store Load Starting Address in XAR6
|
||||
MOVL XAR7,#_pinit_runstart ; Store Run Address in XAR7
|
||||
LCR copy ; Branch to Copy
|
||||
|
||||
MOVL XAR5,#_switch_size ; Store Section Size in XAR5
|
||||
MOVL ACC,@XAR5 ; Move Section Size to ACC
|
||||
MOVL XAR6,#_switch_loadstart ; Store Load Starting Address in XAR6
|
||||
MOVL XAR7,#_switch_runstart ; Store Run Address in XAR7
|
||||
LCR copy ; Branch to Copy
|
||||
|
||||
MOVL XAR5,#_text_size ; Store Section Size in XAR5
|
||||
MOVL ACC,@XAR5 ; Move Section Size to ACC
|
||||
MOVL XAR6,#_text_loadstart ; Store Load Starting Address in XAR6
|
||||
MOVL XAR7,#_text_runstart ; Store Run Address in XAR7
|
||||
LCR copy ; Branch to Copy
|
||||
|
||||
|
||||
LB _c_int00 ; Branch to start of boot.asm in RTS library
|
||||
|
||||
copy:
|
||||
B return,EQ ; Return if ACC is Zero (No section to copy)
|
||||
|
||||
SUBB ACC,#1
|
||||
|
||||
RPT AL ; Copy Section From Load Address to
|
||||
|| PWRITE *XAR7, *XAR6++ ; Run Address
|
||||
|
||||
return:
|
||||
LRETR ; Return
|
||||
|
||||
.end
|
||||
|
||||
;//===========================================================================
|
||||
;// End of file.
|
||||
;//===========================================================================
|
||||
Reference in New Issue
Block a user