summaryrefslogtreecommitdiffstats
path: root/c/src/lib/libbsp/c4x/c4xsim/start/start.S
blob: 2123fc24c37c18fe5ccb57f35276da9c728ce045 (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
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
/*
 *  This start.S is a combination of the files boot.s and crt0.s
 *  provided by Herman ...XXX
 */

	; .file	"crt0.s"
	.ref	_c_int00
	.global	start
	.global	_start

	.if	.tms320C40

	.sect	".const"
mem_control:
	.word	000100000h
mem_data:
	.word	03ef78050h

	.text
start:
_start:
	ldi	0800h,st
	ldp	@mem_control
	ldi	@mem_control,ar0
	ldp	@mem_data	
	ldi	@mem_data,r0
	sti	r0,*+ar0(0)
	sti	r0,*+ar0(4)
	br	_c_int00

	.else

	.sect	".const"
mem_control:
	.word	000808000h
mem_data:
	.word	000001f00h

	.text
start:
_start:
	ldi	0800h,st
	ldp	@mem_control
	ldi	@mem_control,ar0
	ldp	@mem_data	
	ldi	@mem_data,r0
	sti	r0,*+ar0(0)
	sti	r0,*+ar0(4)
	br	_c_int00

	.endif
	; .file	"boot.s"
	.global	__stack
	.global	_c_int00
	.ref	.bss
	.ref	_boot_card
	.ref	_exit

__stack: .usect  ".stack",0
        .text
stack_addr:  .word  __stack

_c_int00:
        ldp     stack_addr
        ldi     @stack_addr,sp
        ldi     sp,ar3
        ldp     .bss		; For the small model, set up the DP to .bss
	ldi	0,ar2		; make sure argc=0 with regparm
	push	ar2		; and memparm
        call    _boot_card
        call	_sim_exit