[BACK]Return to bugcrt.c CVS log [TXT][DIR] Up to [local] / sys / arch / mvme68k / stand / bugcrt

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