Add the rt linux 4.1.3-rt3 as base
[kvmfornfv.git] / kernel / arch / blackfin / include / asm / pda.h
1 /*
2  * Copyright 2007-2009 Analog Devices Inc.
3  *                         Philippe Gerum <rpm@xenomai.org>
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
59 struct blackfin_initial_pda {
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 */