Linux Kernel  3.7.1
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Groups Pages
pda.h
Go to the documentation of this file.
1 /*
2  * Copyright 2007-2009 Analog Devices Inc.
3  * Philippe Gerum <[email protected]>
4  *
5  * Licensed under the GPL-2 or later.
6  */
7 
8 #ifndef _ASM_BLACKFIN_PDA_H
9 #define _ASM_BLACKFIN_PDA_H
10 
11 #include <mach/anomaly.h>
12 
13 #ifndef __ASSEMBLY__
14 
15 struct blackfin_pda { /* Per-processor Data Area */
16 #ifdef CONFIG_SMP
17  struct blackfin_pda *next;
18 #endif
19 
20  unsigned long syscfg;
21 #ifdef CONFIG_SMP
22  unsigned long imask; /* Current IMASK value */
23 #endif
24 
25  unsigned long *ipdt; /* Start of switchable I-CPLB table */
26  unsigned long *ipdt_swapcount; /* Number of swaps in ipdt */
27  unsigned long *dpdt; /* Start of switchable D-CPLB table */
28  unsigned long *dpdt_swapcount; /* Number of swaps in dpdt */
29 
30  /*
31  * Single instructions can have multiple faults, which
32  * need to be handled by traps.c, in irq5. We store
33  * the exception cause to ensure we don't miss a
34  * double fault condition
35  */
36  unsigned long ex_iptr;
37  unsigned long ex_optr;
38  unsigned long ex_buf[4];
39  unsigned long ex_imask; /* Saved imask from exception */
40  unsigned long ex_ipend; /* Saved IPEND from exception */
41  unsigned long *ex_stack; /* Exception stack space */
42 
43 #ifdef ANOMALY_05000261
44  unsigned long last_cplb_fault_retx;
45 #endif
46  unsigned long dcplb_fault_addr;
47  unsigned long icplb_fault_addr;
48  unsigned long retx;
49  unsigned long seqstat;
50  unsigned int __nmi_count; /* number of times NMI asserted on this CPU */
51 #ifdef CONFIG_DEBUG_DOUBLEFAULT
52  unsigned long dcplb_doublefault_addr;
53  unsigned long icplb_doublefault_addr;
54  unsigned long retx_doublefault;
55  unsigned long seqstat_doublefault;
56 #endif
57 };
58 
60  void *retx;
61 #ifdef CONFIG_DEBUG_DOUBLEFAULT
62  void *dcplb_doublefault_addr;
63  void *icplb_doublefault_addr;
64  void *retx_doublefault;
65  unsigned seqstat_doublefault;
66 #endif
67 };
68 
69 extern struct blackfin_pda cpu_pda[];
70 
71 #endif /* __ASSEMBLY__ */
72 
73 #endif /* _ASM_BLACKFIN_PDA_H */