78 lines
2.6 KiB
NASM
78 lines
2.6 KiB
NASM
;/**********************************************************************************************************************
|
|
; * DISCLAIMER
|
|
; * This software is supplied by Renesas Electronics Corporation and is only intended for use with Renesas products. No
|
|
; * other uses are authorized. This software is owned by Renesas Electronics Corporation and is protected under all
|
|
; * applicable laws, including copyright laws.
|
|
; * THIS SOFTWARE IS PROVIDED "AS IS" AND RENESAS MAKES NO WARRANTIES REGARDING
|
|
; * THIS SOFTWARE, WHETHER EXPRESS, IMPLIED OR STATUTORY, INCLUDING BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY,
|
|
; * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. ALL SUCH WARRANTIES ARE EXPRESSLY DISCLAIMED. TO THE MAXIMUM
|
|
; * EXTENT PERMITTED NOT PROHIBITED BY LAW, NEITHER RENESAS ELECTRONICS CORPORATION NOR ANY OF ITS AFFILIATED COMPANIES
|
|
; * SHALL BE LIABLE FOR ANY DIRECT, INDIRECT, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES FOR ANY REASON RELATED TO
|
|
; * THIS SOFTWARE, EVEN IF RENESAS OR ITS AFFILIATES HAVE BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
|
|
; * Renesas reserves the right, without notice, to make changes to this software and to discontinue the availability of
|
|
; * this software. By using this software, you agree to the additional terms and conditions found by accessing the
|
|
; * following link:
|
|
; * http://www.renesas.com/disclaimer
|
|
; *
|
|
; * Copyright (C) 2020 Renesas Electronics Corporation. All rights reserved.
|
|
; *********************************************************************************************************************/;---------------------------------------------------------------------
|
|
; _stkinit
|
|
;
|
|
; void _stkinit(void __near * stackbss);
|
|
;
|
|
; input:
|
|
; stackbss = AX (#LOWW(_stackend))
|
|
; output:
|
|
; NONE
|
|
;---------------------------------------------------------------------
|
|
|
|
; NOTE : THIS IS A TYPICAL EXAMPLE.
|
|
|
|
.PUBLIC _stkinit
|
|
|
|
.textf .CSEG TEXTF
|
|
_stkinit:
|
|
MOVW HL,AX ; stack_end_addr
|
|
MOV [SP+3],#0x00 ; [SP+0]-[SP+2] for return address
|
|
MOVW AX,SP
|
|
SUBW AX,HL ; SUBW AX,#LOWW _@STEND
|
|
BNH $LSTINIT3 ; goto end
|
|
SHRW AX,5 ; loop count for 32 byte transfer
|
|
MOVW BC,AX
|
|
CLRW AX
|
|
LSTINIT1:
|
|
CMPW AX,BC
|
|
BZ $LSTINIT2
|
|
MOVW [HL],AX
|
|
MOVW [HL+2],AX
|
|
MOVW [HL+4],AX
|
|
MOVW [HL+6],AX
|
|
MOVW [HL+8],AX
|
|
MOVW [HL+10],AX
|
|
MOVW [HL+12],AX
|
|
MOVW [HL+14],AX
|
|
MOVW [HL+16],AX
|
|
MOVW [HL+18],AX
|
|
MOVW [HL+20],AX
|
|
MOVW [HL+22],AX
|
|
MOVW [HL+24],AX
|
|
MOVW [HL+26],AX
|
|
MOVW [HL+28],AX
|
|
MOVW [HL+30],AX
|
|
XCHW AX,HL
|
|
ADDW AX,#0x20
|
|
XCHW AX,HL
|
|
DECW BC
|
|
BR $LSTINIT1
|
|
LSTINIT2:
|
|
MOVW AX,SP
|
|
CMPW AX,HL
|
|
BZ $LSTINIT3 ; goto end
|
|
CLRW AX
|
|
MOVW [HL],AX
|
|
INCW HL
|
|
INCW HL
|
|
BR $LSTINIT2
|
|
LSTINIT3:
|
|
RET
|