88 lines
3.3 KiB
NASM
88 lines
3.3 KiB
NASM
;############################################################################
|
|
;
|
|
; 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.
|
|
;//=========================================================================== |