/* Startup code for M68HC11/M68HC12.
|
/* Startup code for M68HC11/M68HC12.
|
* Copyright (C) 1999, 2000, 2001, 2002 Stephane Carrez (stcarrez@nerim.fr)
|
* Copyright (C) 1999, 2000, 2001, 2002 Stephane Carrez (stcarrez@nerim.fr)
|
*
|
*
|
* The authors hereby grant permission to use, copy, modify, distribute,
|
* The authors hereby grant permission to use, copy, modify, distribute,
|
* and license this software and its documentation for any purpose, provided
|
* and license this software and its documentation for any purpose, provided
|
* that existing copyright notices are retained in all copies and that this
|
* that existing copyright notices are retained in all copies and that this
|
* notice is included verbatim in any distributions. No written agreement,
|
* notice is included verbatim in any distributions. No written agreement,
|
* license, or royalty fee is required for any of the authorized uses.
|
* license, or royalty fee is required for any of the authorized uses.
|
* Modifications to this software may be copyrighted by their authors
|
* Modifications to this software may be copyrighted by their authors
|
* and need not follow the licensing terms described here, provided that
|
* and need not follow the licensing terms described here, provided that
|
* the new terms are clearly indicated on the first page of each file where
|
* the new terms are clearly indicated on the first page of each file where
|
* they apply.
|
* they apply.
|
*/
|
*/
|
|
|
;-----------------------------------------
|
;-----------------------------------------
|
; startup code
|
; startup code
|
;-----------------------------------------
|
;-----------------------------------------
|
.file "crt0.s"
|
.file "crt0.s"
|
|
|
;;
|
;;
|
;;
|
;;
|
;; The linker concatenate the .install* sections in the following order:
|
;; The linker concatenate the .install* sections in the following order:
|
;;
|
;;
|
;; .install0 Setup the stack pointer
|
;; .install0 Setup the stack pointer
|
;; .install1 Place holder for applications
|
;; .install1 Place holder for applications
|
;; .install2 Optional installation of data section in memory
|
;; .install2 Optional installation of data section in memory
|
;; .install3 Place holder for applications
|
;; .install3 Place holder for applications
|
;; .install4 Invokes the main
|
;; .install4 Invokes the main
|
;;
|
;;
|
.sect .install0,"ax",@progbits
|
.sect .install0,"ax",@progbits
|
.globl _start
|
.globl _start
|
|
|
_start:
|
_start:
|
;;
|
;;
|
;; At this step, the stack is not initialized and interrupts are masked.
|
;; At this step, the stack is not initialized and interrupts are masked.
|
;; Applications only have 64 cycles to initialize some registers.
|
;; Applications only have 64 cycles to initialize some registers.
|
;;
|
;;
|
;; To have a generic/configurable startup, initialize the stack to
|
;; To have a generic/configurable startup, initialize the stack to
|
;; the end of some memory region. The _stack symbol is defined by
|
;; the end of some memory region. The _stack symbol is defined by
|
;; the linker.
|
;; the linker.
|
;;
|
;;
|
lds #_stack
|
lds #_stack
|
|
|
.sect .install2,"ax",@progbits
|
.sect .install2,"ax",@progbits
|
;;
|
;;
|
;; Call a specific initialization operation. The default is empty.
|
;; Call a specific initialization operation. The default is empty.
|
;; It can be overriden by applications. It is intended to initialize
|
;; It can be overriden by applications. It is intended to initialize
|
;; the 68hc11 registers. Function prototype is:
|
;; the 68hc11 registers. Function prototype is:
|
;;
|
;;
|
;; int __premain(void);
|
;; int __premain(void);
|
;;
|
;;
|
jsr __premain
|
jsr __premain
|
|
|
;;
|
;;
|
;;
|
;;
|
;;
|
;;
|
.sect .install4,"ax",@progbits
|
.sect .install4,"ax",@progbits
|
jsr main
|
jsr main
|
fatal:
|
fatal:
|
jsr exit
|
jsr exit
|
bra fatal
|
bra fatal
|
|
|
;-----------------------------------------
|
;-----------------------------------------
|
; end startup code
|
; end startup code
|
;-----------------------------------------
|
;-----------------------------------------
|
;; Force loading of data section mapping and bss clear
|
;; Force loading of data section mapping and bss clear
|
.globl __map_data_section
|
.globl __map_data_section
|
.globl __init_bss_section
|
.globl __init_bss_section
|
|
|
|
|