83 lines
2.0 KiB
C
83 lines
2.0 KiB
C
/* $NetBSD: bugcrt.c,v 1.3 1996/05/19 19:51:24 chuck Exp $ */
|
|
|
|
#include <sys/types.h>
|
|
#include <machine/prom.h>
|
|
|
|
#include "libbug.h"
|
|
|
|
struct mvmeprom_args bugargs = { 1 }; /* not in BSS */
|
|
|
|
asm (".text");
|
|
asm (".long _start-0x10");
|
|
asm (".long _start");
|
|
start()
|
|
{
|
|
register int dev_lun asm (MVMEPROM_REG_DEVLUN);
|
|
register int ctrl_lun asm (MVMEPROM_REG_CTRLLUN);
|
|
register int flags asm (MVMEPROM_REG_FLAGS);
|
|
register int ctrl_addr asm (MVMEPROM_REG_CTRLADDR);
|
|
register int entry asm (MVMEPROM_REG_ENTRY);
|
|
register int conf_blk asm (MVMEPROM_REG_CONFBLK);
|
|
register char *arg_start asm (MVMEPROM_REG_ARGSTART);
|
|
register char *arg_end asm (MVMEPROM_REG_ARGEND);
|
|
register char *nbarg_start asm (MVMEPROM_REG_NBARGSTART);
|
|
register char *nbarg_end asm (MVMEPROM_REG_NBARGEND);
|
|
extern int edata, end;
|
|
struct mvmeprom_brdid *id, *mvmeprom_getbrdid();
|
|
|
|
bugargs.dev_lun = dev_lun;
|
|
bugargs.ctrl_lun = ctrl_lun;
|
|
bugargs.flags = flags;
|
|
bugargs.ctrl_addr = ctrl_addr;
|
|
bugargs.entry = entry;
|
|
bugargs.conf_blk = conf_blk;
|
|
bugargs.arg_start = arg_start;
|
|
bugargs.arg_end = arg_end;
|
|
bugargs.nbarg_start = nbarg_start;
|
|
bugargs.nbarg_end = nbarg_end;
|
|
*bugargs.arg_end = 0;
|
|
|
|
bzero(&edata, (int)&end-(int)&edata);
|
|
id = mvmeprom_getbrdid();
|
|
bugargs.cputyp = id->model;
|
|
main();
|
|
_rtt();
|
|
/* NOTREACHED */
|
|
}
|
|
|
|
__main()
|
|
{
|
|
}
|
|
|
|
|
|
void
|
|
bugexec(addr)
|
|
|
|
void (*addr)();
|
|
|
|
{
|
|
register int dev_lun asm (MVMEPROM_REG_DEVLUN);
|
|
register int ctrl_lun asm (MVMEPROM_REG_CTRLLUN);
|
|
register int flags asm (MVMEPROM_REG_FLAGS);
|
|
register int ctrl_addr asm (MVMEPROM_REG_CTRLADDR);
|
|
register int entry asm (MVMEPROM_REG_ENTRY);
|
|
register int conf_blk asm (MVMEPROM_REG_CONFBLK);
|
|
register char *arg_start asm (MVMEPROM_REG_ARGSTART);
|
|
register char *arg_end asm (MVMEPROM_REG_ARGEND);
|
|
|
|
dev_lun = bugargs.dev_lun;
|
|
ctrl_lun = bugargs.ctrl_lun;
|
|
flags = bugargs.flags;
|
|
ctrl_addr = bugargs.ctrl_addr;
|
|
entry = bugargs.entry;
|
|
conf_blk = bugargs.conf_blk;
|
|
arg_start = bugargs.arg_start;
|
|
arg_end = bugargs.arg_end;
|
|
|
|
(*addr)();
|
|
printf("bugexec: 0x%x returned!\n", addr);
|
|
|
|
_rtt();
|
|
}
|
|
|