summaryrefslogtreecommitdiffstats
path: root/c/src/lib/libbsp/h8300/h8sim/start/start.S
blob: 32b074f7bf7e3331542a5aa4d66aa8228e0b479c (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
; h8/300 and h8/300h start up file.

#ifdef __H8300__

	.text
	.global	_start
_start:
	mov.w	#_stack_init,sp
	mov.w	#_edata,r0
	mov.w	#_clear_end,r1
	mov.w	#0,r2
.loop:	mov.w	r2,@r0
	adds	#2,r0
	cmp	r1,r0
	blo	.loop
        ;       call __main
	jsr	@_boot_card
	mov.w	#0,r0		; indicate reason to exit
	sleep
	jmp	@_start 	; restart
#else

#if defined(__H8300H__) 
	.h8300h
#else /* must be __H300S__ */
	.h8300s
#endif
	.text
	.global	_start
_start:
	mov.l	#_stack_init,sp
	mov.l	#_edata,er0
	mov.l	#_clear_end,er1
	mov.w	#0,r2		; not sure about alignment requirements
.loop:	mov.w	r2,@er0		; playing it safe for now
	adds	#2,er0
	cmp.l	er1,er0
	blo	.loop
        ;       call __main
	jsr	@_boot_card
	mov.w	#0,r0		; indicate reason to exit
	sleep
	jmp	@_start 	; restart

#endif /* end of H8300 */