linux/arch/blackfin/include/asm/pda.h
<<
>>
Prefs
   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
  15struct 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
  59struct 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
  69extern struct blackfin_pda cpu_pda[];
  70
  71#endif  /* __ASSEMBLY__ */
  72
  73#endif /* _ASM_BLACKFIN_PDA_H */
  74