xref: /netbsd-src/sys/arch/mvme68k/stand/libbug/bugstart.S (revision 437ea53be7edf09a326c52b6c0a25f79b92031d8)
1/*	$NetBSD: bugstart.S,v 1.1 2014/11/21 20:10:28 christos Exp $	*/
2
3#define _LOCORE
4#include <machine/prom.h>
5#undef _LOCORE
6#include <machine/asm.h>
7
8	.data
9	.even
10
11GLOBAL(bugargs)
12	.space	MVMEPROM_ARGS_MAX*4
13
14	.text
15	.even
16
17	.long	_C_LABEL(start) - 0x10
18	.long	_C_LABEL(start)
19
20#define	BUG_ARG(which)	_C_LABEL(bugargs) + (which)
21
22ENTRY_NOPROFILE(_start)
23ENTRY_NOPROFILE(start)
24	moveml	%d0/%a0,%sp@-
25	lea	_C_LABEL(edata),%a0
26	movl	#_C_LABEL(end) - 4,%d0
27	subl	%a0,%d0
28	lsrl	#2,%d0
291:	clrl	%a0@+
30	dbra	%d0,1b
31	moveml	%sp@+,%d0/%a0
32	movl	MVMEPROM_REG_DEVLUN, BUG_ARG(MVMEPROM_ARGS_DEVLUN)
33	movl	MVMEPROM_REG_CTRLLUN, BUG_ARG(MVMEPROM_ARGS_CTRLLUN)
34	movl	MVMEPROM_REG_FLAGS, BUG_ARG(MVMEPROM_ARGS_FLAGS)
35	movl	MVMEPROM_REG_CTRLADDR, BUG_ARG(MVMEPROM_ARGS_CTRLADDR)
36	movl	MVMEPROM_REG_ENTRY, BUG_ARG(MVMEPROM_ARGS_ENTRY)
37	movl	MVMEPROM_REG_CONFBLK, BUG_ARG(MVMEPROM_ARGS_CONFBLK)
38	movl	MVMEPROM_REG_NBARGSTART, BUG_ARG(MVMEPROM_ARGS_NBARGSTART)
39	movl	MVMEPROM_REG_NBARGEND, BUG_ARG(MVMEPROM_ARGS_NBARGEND)
40	movl	MVMEPROM_REG_ARGSTART, BUG_ARG(MVMEPROM_ARGS_ARGSTART)
41	movl	MVMEPROM_REG_ARGEND, BUG_ARG(MVMEPROM_ARGS_ARGEND)
42	jmp	_C_LABEL(_bugstart)
43
44ENTRY_NOPROFILE(bugexec)
45	addql	#4,%sp
46	movl	BUG_ARG(MVMEPROM_ARGS_DEVLUN), MVMEPROM_REG_DEVLUN
47	movl	BUG_ARG(MVMEPROM_ARGS_CTRLLUN), MVMEPROM_REG_CTRLLUN
48	movl	BUG_ARG(MVMEPROM_ARGS_FLAGS), MVMEPROM_REG_FLAGS
49	movl	BUG_ARG(MVMEPROM_ARGS_CTRLADDR), MVMEPROM_REG_CTRLADDR
50	movl	BUG_ARG(MVMEPROM_ARGS_ENTRY), MVMEPROM_REG_ENTRY
51	movl	BUG_ARG(MVMEPROM_ARGS_CONFBLK), MVMEPROM_REG_CONFBLK
52	movl	BUG_ARG(MVMEPROM_ARGS_NBARGSTART), MVMEPROM_REG_NBARGSTART
53	movl	BUG_ARG(MVMEPROM_ARGS_NBARGEND), MVMEPROM_REG_NBARGEND
54	movl	BUG_ARG(MVMEPROM_ARGS_ARGSTART), MVMEPROM_REG_ARGSTART
55	movl	BUG_ARG(MVMEPROM_ARGS_ARGEND), MVMEPROM_REG_ARGEND
56ENTRY_NOPROFILE(__main)
57	rts
58