source: svn/trunk/newcon3bcm2_21bu/toolchain/mips-linux-uclibc/include/asm/sn/nmi.h

Last change on this file was 2, checked in by phkim, 11 years ago

1.phkim

  1. revision copy newcon3sk r27
  • Property svn:executable set to *
File size: 3.3 KB
Line 
1/*
2 * This file is subject to the terms and conditions of the GNU General Public
3 * License.  See the file "COPYING" in the main directory of this archive
4 * for more details.
5 *
6 * Copyright (C) 1992 - 1997 Silicon Graphics, Inc.
7 */
8#ifndef __ASM_SN_NMI_H
9#define __ASM_SN_NMI_H
10
11#ident "$Revision: 1.1 $"
12
13#include <asm/sn/addrs.h>
14
15/*
16 * The launch data structure resides at a fixed place in each node's memory
17 * and is used to communicate between the master processor and the slave
18 * processors.
19 *
20 * The master stores launch parameters in the launch structure
21 * corresponding to a target processor that is in a slave loop, then sends
22 * an interrupt to the slave processor.  The slave calls the desired
23 * function, followed by an optional rendezvous function, then returns to
24 * the slave loop.  The master does not wait for the slaves before
25 * returning.
26 *
27 * There is an array of launch structures, one per CPU on the node.  One
28 * interrupt level is used per CPU.
29 */
30
31#define NMI_MAGIC               0x48414d4d455201
32#define NMI_SIZEOF              0x40
33
34#define NMI_OFF_MAGIC           0x00    /* Struct offsets for assembly      */
35#define NMI_OFF_FLAGS           0x08
36#define NMI_OFF_CALL            0x10
37#define NMI_OFF_CALLC           0x18
38#define NMI_OFF_CALLPARM        0x20
39#define NMI_OFF_GMASTER         0x28
40
41/*
42 * The NMI routine is called only if the complement address is
43 * correct.
44 *
45 * Before control is transferred to a routine, the complement address
46 * is zeroed (invalidated) to prevent an accidental call from a spurious
47 * interrupt.
48 *
49 */
50
51#ifndef __ASSEMBLY__
52
53typedef struct nmi_s {
54        volatile unsigned long   magic;         /* Magic number */
55        volatile unsigned long   flags;         /* Combination of flags above */
56        volatile void *call_addr;       /* Routine for slave to call        */
57        volatile void *call_addr_c;     /* 1's complement of address        */
58        volatile void *call_parm;       /* Single parm passed to call       */
59        volatile unsigned long   gmaster;       /* Flag true only on global master*/
60} nmi_t;
61
62#endif /* !__ASSEMBLY__ */
63
64/* Following definitions are needed both in the prom & the kernel
65 * to identify the format of the nmi cpu register save area in the
66 * low memory on each node.
67 */
68#ifndef __ASSEMBLY__
69
70struct reg_struct {
71        unsigned long   gpr[32];
72        unsigned long   sr;
73        unsigned long   cause;
74        unsigned long   epc;
75        unsigned long   badva;
76        unsigned long   error_epc;
77        unsigned long   cache_err;
78        unsigned long   nmi_sr;
79};
80
81#endif /* !__ASSEMBLY__ */
82
83/* These are the assembly language offsets into the reg_struct structure */
84
85#define R0_OFF          0x0
86#define R1_OFF          0x8
87#define R2_OFF          0x10
88#define R3_OFF          0x18
89#define R4_OFF          0x20
90#define R5_OFF          0x28
91#define R6_OFF          0x30
92#define R7_OFF          0x38
93#define R8_OFF          0x40
94#define R9_OFF          0x48
95#define R10_OFF         0x50
96#define R11_OFF         0x58
97#define R12_OFF         0x60
98#define R13_OFF         0x68
99#define R14_OFF         0x70
100#define R15_OFF         0x78
101#define R16_OFF         0x80
102#define R17_OFF         0x88
103#define R18_OFF         0x90
104#define R19_OFF         0x98
105#define R20_OFF         0xa0
106#define R21_OFF         0xa8
107#define R22_OFF         0xb0
108#define R23_OFF         0xb8
109#define R24_OFF         0xc0
110#define R25_OFF         0xc8
111#define R26_OFF         0xd0
112#define R27_OFF         0xd8
113#define R28_OFF         0xe0
114#define R29_OFF         0xe8
115#define R30_OFF         0xf0
116#define R31_OFF         0xf8
117#define SR_OFF          0x100
118#define CAUSE_OFF       0x108
119#define EPC_OFF         0x110
120#define BADVA_OFF       0x118
121#define ERROR_EPC_OFF   0x120
122#define CACHE_ERR_OFF   0x128
123#define NMISR_OFF       0x130
124
125#endif /* __ASM_SN_NMI_H */
Note: See TracBrowser for help on using the repository browser.