Annotation of sys/arch/mvme68k/stand/bugcrt/bugcrt.c, Revision 1.1.1.1
1.1 nbrk 1: /* $OpenBSD: bugcrt.c,v 1.5 2003/08/20 00:25:08 deraadt Exp $ */
2:
3: #include <sys/types.h>
4: #include <machine/prom.h>
5:
6: #include "libbug.h"
7: #include "stand.h"
8:
9: void __main(void);
10: void start(void);
11:
12: struct mvmeprom_args bugargs = { 1 }; /* not in BSS */
13:
14: asm (".text");
15: asm (".long _start-0x10");
16: asm (".long _start");
17:
18: void
19: start(void)
20: {
21: register int dev_lun asm (MVMEPROM_REG_DEVLUN);
22: register int ctrl_lun asm (MVMEPROM_REG_CTRLLUN);
23: register int flags asm (MVMEPROM_REG_FLAGS);
24: register int ctrl_addr asm (MVMEPROM_REG_CTRLADDR);
25: register int entry asm (MVMEPROM_REG_ENTRY);
26: register int conf_blk asm (MVMEPROM_REG_CONFBLK);
27: register char *arg_start asm (MVMEPROM_REG_ARGSTART);
28: register char *arg_end asm (MVMEPROM_REG_ARGEND);
29: register char *nbarg_start asm (MVMEPROM_REG_NBARGSTART);
30: register char *nbarg_end asm (MVMEPROM_REG_NBARGEND);
31: extern int edata, end;
32: struct mvmeprom_brdid *id, *mvmeprom_getbrdid(void);
33:
34: bugargs.dev_lun = dev_lun;
35: bugargs.ctrl_lun = ctrl_lun;
36: bugargs.flags = flags;
37: bugargs.ctrl_addr = ctrl_addr;
38: bugargs.entry = entry;
39: bugargs.conf_blk = conf_blk;
40: bugargs.arg_start = arg_start;
41: bugargs.arg_end = arg_end;
42: bugargs.nbarg_start = nbarg_start;
43: bugargs.nbarg_end = nbarg_end;
44: *bugargs.arg_end = 0;
45:
46: bzero(&edata, (int)&end-(int)&edata);
47: id = mvmeprom_getbrdid();
48: bugargs.cputyp = id->model;
49: main();
50: _rtt();
51: /* NOTREACHED */
52: }
53:
54: void
55: __main(void)
56: {
57: }
58:
59:
60: void
61: bugexec(void (*addr)(void))
62: {
63: register int dev_lun asm (MVMEPROM_REG_DEVLUN);
64: register int ctrl_lun asm (MVMEPROM_REG_CTRLLUN);
65: register int flags asm (MVMEPROM_REG_FLAGS);
66: register int ctrl_addr asm (MVMEPROM_REG_CTRLADDR);
67: register int entry asm (MVMEPROM_REG_ENTRY);
68: register int conf_blk asm (MVMEPROM_REG_CONFBLK);
69: register char *arg_start asm (MVMEPROM_REG_ARGSTART);
70: register char *arg_end asm (MVMEPROM_REG_ARGEND);
71:
72: dev_lun = bugargs.dev_lun;
73: ctrl_lun = bugargs.ctrl_lun;
74: flags = bugargs.flags;
75: ctrl_addr = bugargs.ctrl_addr;
76: entry = bugargs.entry;
77: conf_blk = bugargs.conf_blk;
78: arg_start = bugargs.arg_start;
79: arg_end = bugargs.arg_end;
80:
81: (*addr)();
82: printf("bugexec: 0x%x returned!\n", addr);
83:
84: _rtt();
85: }
86:
CVSweb