void (*sun3x_putchar)(int); int (*sun3x_getchar)(void); int (*sun3x_mayget)(void); int (*sun3x_mayput)(int); void (*sun3x_prom_reboot)(void);
e_vector sun3x_prom_abort; struct linux_romvec *romvec;
/* prom vector table */
e_vector *sun3x_prom_vbr;
/* Handle returning to the prom */ staticvoid sun3x_halt(void)
{ unsignedlong flags;
/* Disable interrupts while we mess with things */
local_irq_save(flags);
if (!((idprom->id_machtype & SM_ARCH_MASK) == SM_SUN3X)) {
pr_warn("Machine reports strange type %02x\n",
idprom->id_machtype);
pr_warn("Pretending it's a 3/80, but very afraid...\n");
idprom->id_machtype = SM_SUN3X | SM_3_80;
}
/* point trap #14 at abort. * XXX this is futile since we restore the vbr first - oops
*/
vectors[VEC_TRAP14] = sun3x_prom_abort;
}
staticint __init sun3x_debug_setup(char *arg)
{ /* If debug=prom was specified, start the debug console */ if (MACH_IS_SUN3X && !strcmp(arg, "prom"))
register_console(&sun3x_debug); return 0;
}
early_param("debug", sun3x_debug_setup);
/* some prom functions to export */ int prom_getintdefault(int node, char *property, int deflt)
{ return deflt;
}
int prom_getbool (int node, char *prop)
{ return 1;
}
void prom_printf(char *fmt, ...)
{
}
void prom_halt (void)
{
sun3x_halt();
}
/* Get the idprom and stuff it into buffer 'idbuf'. Returns the * format type. 'num_bytes' is the number of bytes that your idbuf * has space for. Returns 0xff on error.
*/ unsignedchar
prom_get_idprom(char *idbuf, int num_bytes)
{ int i;
/* make a copy of the idprom structure */ for (i = 0; i < num_bytes; i++)
idbuf[i] = ((char *)SUN3X_IDPROM)[i];
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.