68 lines
2.0 KiB
C
68 lines
2.0 KiB
C
|
/*
|
||
|
* mpmbox.h: Interface and defines for the OpenProm mailbox
|
||
|
* facilities for MP machines under Linux.
|
||
|
*
|
||
|
* Copyright (C) 1995 David S. Miller (davem@caip.rutgers.edu)
|
||
|
*/
|
||
|
|
||
|
#ifndef _SPARC_MPMBOX_H
|
||
|
#define _SPARC_MPMBOX_H
|
||
|
|
||
|
/* The prom allocates, for each CPU on the machine an unsigned
|
||
|
* byte in physical ram. You probe the device tree prom nodes
|
||
|
* for these values. The purpose of this byte is to be able to
|
||
|
* pass messages from one cpu to another.
|
||
|
*/
|
||
|
|
||
|
/* These are the main message types we have to look for in our
|
||
|
* Cpu mailboxes, based upon these values we decide what course
|
||
|
* of action to take.
|
||
|
*/
|
||
|
|
||
|
/* The CPU is executing code in the kernel. */
|
||
|
#define MAILBOX_ISRUNNING 0xf0
|
||
|
|
||
|
/* Another CPU called romvec->pv_exit(), you should call
|
||
|
* prom_stopcpu() when you see this in your mailbox.
|
||
|
*/
|
||
|
#define MAILBOX_EXIT 0xfb
|
||
|
|
||
|
/* Another CPU called romvec->pv_enter(), you should call
|
||
|
* prom_cpuidle() when this is seen.
|
||
|
*/
|
||
|
#define MAILBOX_GOSPIN 0xfc
|
||
|
|
||
|
/* Another CPU has hit a breakpoint either into kadb or the prom
|
||
|
* itself. Just like MAILBOX_GOSPIN, you should call prom_cpuidle()
|
||
|
* at this point.
|
||
|
*/
|
||
|
#define MAILBOX_BPT_SPIN 0xfd
|
||
|
|
||
|
/* Oh geese, some other nitwit got a damn watchdog reset. The party's
|
||
|
* over so go call prom_stopcpu().
|
||
|
*/
|
||
|
#define MAILBOX_WDOG_STOP 0xfe
|
||
|
|
||
|
#ifndef __ASSEMBLY__
|
||
|
|
||
|
/* Handy macro's to determine a cpu's state. */
|
||
|
|
||
|
/* Is the cpu still in Power On Self Test? */
|
||
|
#define MBOX_POST_P(letter) ((letter) >= 0x00 && (letter) <= 0x7f)
|
||
|
|
||
|
/* Is the cpu at the 'ok' prompt of the PROM? */
|
||
|
#define MBOX_PROMPROMPT_P(letter) ((letter) >= 0x80 && (letter) <= 0x8f)
|
||
|
|
||
|
/* Is the cpu spinning in the PROM? */
|
||
|
#define MBOX_PROMSPIN_P(letter) ((letter) >= 0x90 && (letter) <= 0xef)
|
||
|
|
||
|
/* Sanity check... This is junk mail, throw it out. */
|
||
|
#define MBOX_BOGON_P(letter) ((letter) >= 0xf1 && (letter) <= 0xfa)
|
||
|
|
||
|
/* Is the cpu actively running an application/kernel-code? */
|
||
|
#define MBOX_RUNNING_P(letter) ((letter) == MAILBOX_ISRUNNING)
|
||
|
|
||
|
#endif /* !(__ASSEMBLY__) */
|
||
|
|
||
|
#endif /* !(_SPARC_MPMBOX_H) */
|