OpenCores
URL https://opencores.org/ocsvn/or1k/or1k/trunk

Subversion Repositories or1k

[/] [or1k/] [trunk/] [linux/] [linux-2.4/] [include/] [asm-mips64/] [sn/] [nmi.h] - Blame information for rev 1765

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 1275 phoenix
/*
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.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 compliment address
46
 * is zeroed (invalidated) to prevent an accidental call from a spurious
47
 * interrupt.
48
 *
49
 */
50
 
51
#ifndef __ASSEMBLY__
52
 
53
typedef 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
 
70
struct 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 */

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.