| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 1 | /* $Id: mpmbox.h,v 1.4 1996/04/25 06:13:19 davem Exp $ | 
|  | 2 | * mpmbox.h:  Interface and defines for the OpenProm mailbox | 
|  | 3 | *               facilities for MP machines under Linux. | 
|  | 4 | * | 
|  | 5 | * Copyright (C) 1995 David S. Miller (davem@caip.rutgers.edu) | 
|  | 6 | */ | 
|  | 7 |  | 
|  | 8 | #ifndef _SPARC_MPMBOX_H | 
|  | 9 | #define _SPARC_MPMBOX_H | 
|  | 10 |  | 
|  | 11 | /* The prom allocates, for each CPU on the machine an unsigned | 
|  | 12 | * byte in physical ram.  You probe the device tree prom nodes | 
|  | 13 | * for these values.  The purpose of this byte is to be able to | 
|  | 14 | * pass messages from one cpu to another. | 
|  | 15 | */ | 
|  | 16 |  | 
|  | 17 | /* These are the main message types we have to look for in our | 
|  | 18 | * Cpu mailboxes, based upon these values we decide what course | 
|  | 19 | * of action to take. | 
|  | 20 | */ | 
|  | 21 |  | 
|  | 22 | /* The CPU is executing code in the kernel. */ | 
|  | 23 | #define MAILBOX_ISRUNNING     0xf0 | 
|  | 24 |  | 
|  | 25 | /* Another CPU called romvec->pv_exit(), you should call | 
|  | 26 | * prom_stopcpu() when you see this in your mailbox. | 
|  | 27 | */ | 
|  | 28 | #define MAILBOX_EXIT          0xfb | 
|  | 29 |  | 
|  | 30 | /* Another CPU called romvec->pv_enter(), you should call | 
|  | 31 | * prom_cpuidle() when this is seen. | 
|  | 32 | */ | 
|  | 33 | #define MAILBOX_GOSPIN        0xfc | 
|  | 34 |  | 
|  | 35 | /* Another CPU has hit a breakpoint either into kadb or the prom | 
|  | 36 | * itself.  Just like MAILBOX_GOSPIN, you should call prom_cpuidle() | 
|  | 37 | * at this point. | 
|  | 38 | */ | 
|  | 39 | #define MAILBOX_BPT_SPIN      0xfd | 
|  | 40 |  | 
|  | 41 | /* Oh geese, some other nitwit got a damn watchdog reset.  The party's | 
|  | 42 | * over so go call prom_stopcpu(). | 
|  | 43 | */ | 
|  | 44 | #define MAILBOX_WDOG_STOP     0xfe | 
|  | 45 |  | 
|  | 46 | #ifndef __ASSEMBLY__ | 
|  | 47 |  | 
|  | 48 | /* Handy macro's to determine a cpu's state. */ | 
|  | 49 |  | 
|  | 50 | /* Is the cpu still in Power On Self Test? */ | 
|  | 51 | #define MBOX_POST_P(letter)  ((letter) >= 0x00 && (letter) <= 0x7f) | 
|  | 52 |  | 
|  | 53 | /* Is the cpu at the 'ok' prompt of the PROM? */ | 
|  | 54 | #define MBOX_PROMPROMPT_P(letter) ((letter) >= 0x80 && (letter) <= 0x8f) | 
|  | 55 |  | 
|  | 56 | /* Is the cpu spinning in the PROM? */ | 
|  | 57 | #define MBOX_PROMSPIN_P(letter) ((letter) >= 0x90 && (letter) <= 0xef) | 
|  | 58 |  | 
|  | 59 | /* Sanity check... This is junk mail, throw it out. */ | 
|  | 60 | #define MBOX_BOGON_P(letter) ((letter) >= 0xf1 && (letter) <= 0xfa) | 
|  | 61 |  | 
|  | 62 | /* Is the cpu actively running an application/kernel-code? */ | 
|  | 63 | #define MBOX_RUNNING_P(letter) ((letter) == MAILBOX_ISRUNNING) | 
|  | 64 |  | 
|  | 65 | #endif /* !(__ASSEMBLY__) */ | 
|  | 66 |  | 
|  | 67 | #endif /* !(_SPARC_MPMBOX_H) */ |