linux/arch/tile/include/uapi/arch/interrupts_64.h
<<
>>
Prefs
   1/*
   2 * Copyright 2011 Tilera Corporation. All Rights Reserved.
   3 *
   4 *   This program is free software; you can redistribute it and/or
   5 *   modify it under the terms of the GNU General Public License
   6 *   as published by the Free Software Foundation, version 2.
   7 *
   8 *   This program is distributed in the hope that it will be useful, but
   9 *   WITHOUT ANY WARRANTY; without even the implied warranty of
  10 *   MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE, GOOD TITLE or
  11 *   NON INFRINGEMENT.  See the GNU General Public License for
  12 *   more details.
  13 */
  14
  15#ifndef __ARCH_INTERRUPTS_H__
  16#define __ARCH_INTERRUPTS_H__
  17
  18#ifndef __KERNEL__
  19/** Mask for an interrupt. */
  20#ifdef __ASSEMBLER__
  21/* Note: must handle breaking interrupts into high and low words manually. */
  22#define INT_MASK(intno) (1 << (intno))
  23#else
  24#define INT_MASK(intno) (1ULL << (intno))
  25#endif
  26#endif
  27
  28
  29/** Where a given interrupt executes */
  30#define INTERRUPT_VECTOR(i, pl) (0xFC000000 + ((pl) << 24) + ((i) << 8))
  31
  32/** Where to store a vector for a given interrupt. */
  33#define USER_INTERRUPT_VECTOR(i) INTERRUPT_VECTOR(i, 0)
  34
  35/** The base address of user-level interrupts. */
  36#define USER_INTERRUPT_VECTOR_BASE INTERRUPT_VECTOR(0, 0)
  37
  38
  39/** Additional synthetic interrupt. */
  40#define INT_BREAKPOINT (63)
  41
  42#define INT_MEM_ERROR    0
  43#define INT_SINGLE_STEP_3    1
  44#define INT_SINGLE_STEP_2    2
  45#define INT_SINGLE_STEP_1    3
  46#define INT_SINGLE_STEP_0    4
  47#define INT_IDN_COMPLETE    5
  48#define INT_UDN_COMPLETE    6
  49#define INT_ITLB_MISS    7
  50#define INT_ILL    8
  51#define INT_GPV    9
  52#define INT_IDN_ACCESS   10
  53#define INT_UDN_ACCESS   11
  54#define INT_SWINT_3   12
  55#define INT_SWINT_2   13
  56#define INT_SWINT_1   14
  57#define INT_SWINT_0   15
  58#define INT_ILL_TRANS   16
  59#define INT_UNALIGN_DATA   17
  60#define INT_DTLB_MISS   18
  61#define INT_DTLB_ACCESS   19
  62#define INT_IDN_FIREWALL   20
  63#define INT_UDN_FIREWALL   21
  64#define INT_TILE_TIMER   22
  65#define INT_AUX_TILE_TIMER   23
  66#define INT_IDN_TIMER   24
  67#define INT_UDN_TIMER   25
  68#define INT_IDN_AVAIL   26
  69#define INT_UDN_AVAIL   27
  70#define INT_IPI_3   28
  71#define INT_IPI_2   29
  72#define INT_IPI_1   30
  73#define INT_IPI_0   31
  74#define INT_PERF_COUNT   32
  75#define INT_AUX_PERF_COUNT   33
  76#define INT_INTCTRL_3   34
  77#define INT_INTCTRL_2   35
  78#define INT_INTCTRL_1   36
  79#define INT_INTCTRL_0   37
  80#define INT_BOOT_ACCESS   38
  81#define INT_WORLD_ACCESS   39
  82#define INT_I_ASID   40
  83#define INT_D_ASID   41
  84#define INT_DOUBLE_FAULT   42
  85
  86#define NUM_INTERRUPTS 43
  87
  88#ifndef __ASSEMBLER__
  89#define QUEUED_INTERRUPTS ( \
  90    (1ULL << INT_MEM_ERROR) | \
  91    (1ULL << INT_IDN_COMPLETE) | \
  92    (1ULL << INT_UDN_COMPLETE) | \
  93    (1ULL << INT_IDN_FIREWALL) | \
  94    (1ULL << INT_UDN_FIREWALL) | \
  95    (1ULL << INT_TILE_TIMER) | \
  96    (1ULL << INT_AUX_TILE_TIMER) | \
  97    (1ULL << INT_IDN_TIMER) | \
  98    (1ULL << INT_UDN_TIMER) | \
  99    (1ULL << INT_IDN_AVAIL) | \
 100    (1ULL << INT_UDN_AVAIL) | \
 101    (1ULL << INT_IPI_3) | \
 102    (1ULL << INT_IPI_2) | \
 103    (1ULL << INT_IPI_1) | \
 104    (1ULL << INT_IPI_0) | \
 105    (1ULL << INT_PERF_COUNT) | \
 106    (1ULL << INT_AUX_PERF_COUNT) | \
 107    (1ULL << INT_INTCTRL_3) | \
 108    (1ULL << INT_INTCTRL_2) | \
 109    (1ULL << INT_INTCTRL_1) | \
 110    (1ULL << INT_INTCTRL_0) | \
 111    (1ULL << INT_BOOT_ACCESS) | \
 112    (1ULL << INT_WORLD_ACCESS) | \
 113    (1ULL << INT_I_ASID) | \
 114    (1ULL << INT_D_ASID) | \
 115    (1ULL << INT_DOUBLE_FAULT) | \
 116    0)
 117#define NONQUEUED_INTERRUPTS ( \
 118    (1ULL << INT_SINGLE_STEP_3) | \
 119    (1ULL << INT_SINGLE_STEP_2) | \
 120    (1ULL << INT_SINGLE_STEP_1) | \
 121    (1ULL << INT_SINGLE_STEP_0) | \
 122    (1ULL << INT_ITLB_MISS) | \
 123    (1ULL << INT_ILL) | \
 124    (1ULL << INT_GPV) | \
 125    (1ULL << INT_IDN_ACCESS) | \
 126    (1ULL << INT_UDN_ACCESS) | \
 127    (1ULL << INT_SWINT_3) | \
 128    (1ULL << INT_SWINT_2) | \
 129    (1ULL << INT_SWINT_1) | \
 130    (1ULL << INT_SWINT_0) | \
 131    (1ULL << INT_ILL_TRANS) | \
 132    (1ULL << INT_UNALIGN_DATA) | \
 133    (1ULL << INT_DTLB_MISS) | \
 134    (1ULL << INT_DTLB_ACCESS) | \
 135    0)
 136#define CRITICAL_MASKED_INTERRUPTS ( \
 137    (1ULL << INT_MEM_ERROR) | \
 138    (1ULL << INT_SINGLE_STEP_3) | \
 139    (1ULL << INT_SINGLE_STEP_2) | \
 140    (1ULL << INT_SINGLE_STEP_1) | \
 141    (1ULL << INT_SINGLE_STEP_0) | \
 142    (1ULL << INT_IDN_COMPLETE) | \
 143    (1ULL << INT_UDN_COMPLETE) | \
 144    (1ULL << INT_IDN_FIREWALL) | \
 145    (1ULL << INT_UDN_FIREWALL) | \
 146    (1ULL << INT_TILE_TIMER) | \
 147    (1ULL << INT_AUX_TILE_TIMER) | \
 148    (1ULL << INT_IDN_TIMER) | \
 149    (1ULL << INT_UDN_TIMER) | \
 150    (1ULL << INT_IDN_AVAIL) | \
 151    (1ULL << INT_UDN_AVAIL) | \
 152    (1ULL << INT_IPI_3) | \
 153    (1ULL << INT_IPI_2) | \
 154    (1ULL << INT_IPI_1) | \
 155    (1ULL << INT_IPI_0) | \
 156    (1ULL << INT_PERF_COUNT) | \
 157    (1ULL << INT_AUX_PERF_COUNT) | \
 158    (1ULL << INT_INTCTRL_3) | \
 159    (1ULL << INT_INTCTRL_2) | \
 160    (1ULL << INT_INTCTRL_1) | \
 161    (1ULL << INT_INTCTRL_0) | \
 162    0)
 163#define CRITICAL_UNMASKED_INTERRUPTS ( \
 164    (1ULL << INT_ITLB_MISS) | \
 165    (1ULL << INT_ILL) | \
 166    (1ULL << INT_GPV) | \
 167    (1ULL << INT_IDN_ACCESS) | \
 168    (1ULL << INT_UDN_ACCESS) | \
 169    (1ULL << INT_SWINT_3) | \
 170    (1ULL << INT_SWINT_2) | \
 171    (1ULL << INT_SWINT_1) | \
 172    (1ULL << INT_SWINT_0) | \
 173    (1ULL << INT_ILL_TRANS) | \
 174    (1ULL << INT_UNALIGN_DATA) | \
 175    (1ULL << INT_DTLB_MISS) | \
 176    (1ULL << INT_DTLB_ACCESS) | \
 177    (1ULL << INT_BOOT_ACCESS) | \
 178    (1ULL << INT_WORLD_ACCESS) | \
 179    (1ULL << INT_I_ASID) | \
 180    (1ULL << INT_D_ASID) | \
 181    (1ULL << INT_DOUBLE_FAULT) | \
 182    0)
 183#define MASKABLE_INTERRUPTS ( \
 184    (1ULL << INT_MEM_ERROR) | \
 185    (1ULL << INT_SINGLE_STEP_3) | \
 186    (1ULL << INT_SINGLE_STEP_2) | \
 187    (1ULL << INT_SINGLE_STEP_1) | \
 188    (1ULL << INT_SINGLE_STEP_0) | \
 189    (1ULL << INT_IDN_COMPLETE) | \
 190    (1ULL << INT_UDN_COMPLETE) | \
 191    (1ULL << INT_IDN_FIREWALL) | \
 192    (1ULL << INT_UDN_FIREWALL) | \
 193    (1ULL << INT_TILE_TIMER) | \
 194    (1ULL << INT_AUX_TILE_TIMER) | \
 195    (1ULL << INT_IDN_TIMER) | \
 196    (1ULL << INT_UDN_TIMER) | \
 197    (1ULL << INT_IDN_AVAIL) | \
 198    (1ULL << INT_UDN_AVAIL) | \
 199    (1ULL << INT_IPI_3) | \
 200    (1ULL << INT_IPI_2) | \
 201    (1ULL << INT_IPI_1) | \
 202    (1ULL << INT_IPI_0) | \
 203    (1ULL << INT_PERF_COUNT) | \
 204    (1ULL << INT_AUX_PERF_COUNT) | \
 205    (1ULL << INT_INTCTRL_3) | \
 206    (1ULL << INT_INTCTRL_2) | \
 207    (1ULL << INT_INTCTRL_1) | \
 208    (1ULL << INT_INTCTRL_0) | \
 209    0)
 210#define UNMASKABLE_INTERRUPTS ( \
 211    (1ULL << INT_ITLB_MISS) | \
 212    (1ULL << INT_ILL) | \
 213    (1ULL << INT_GPV) | \
 214    (1ULL << INT_IDN_ACCESS) | \
 215    (1ULL << INT_UDN_ACCESS) | \
 216    (1ULL << INT_SWINT_3) | \
 217    (1ULL << INT_SWINT_2) | \
 218    (1ULL << INT_SWINT_1) | \
 219    (1ULL << INT_SWINT_0) | \
 220    (1ULL << INT_ILL_TRANS) | \
 221    (1ULL << INT_UNALIGN_DATA) | \
 222    (1ULL << INT_DTLB_MISS) | \
 223    (1ULL << INT_DTLB_ACCESS) | \
 224    (1ULL << INT_BOOT_ACCESS) | \
 225    (1ULL << INT_WORLD_ACCESS) | \
 226    (1ULL << INT_I_ASID) | \
 227    (1ULL << INT_D_ASID) | \
 228    (1ULL << INT_DOUBLE_FAULT) | \
 229    0)
 230#define SYNC_INTERRUPTS ( \
 231    (1ULL << INT_SINGLE_STEP_3) | \
 232    (1ULL << INT_SINGLE_STEP_2) | \
 233    (1ULL << INT_SINGLE_STEP_1) | \
 234    (1ULL << INT_SINGLE_STEP_0) | \
 235    (1ULL << INT_IDN_COMPLETE) | \
 236    (1ULL << INT_UDN_COMPLETE) | \
 237    (1ULL << INT_ITLB_MISS) | \
 238    (1ULL << INT_ILL) | \
 239    (1ULL << INT_GPV) | \
 240    (1ULL << INT_IDN_ACCESS) | \
 241    (1ULL << INT_UDN_ACCESS) | \
 242    (1ULL << INT_SWINT_3) | \
 243    (1ULL << INT_SWINT_2) | \
 244    (1ULL << INT_SWINT_1) | \
 245    (1ULL << INT_SWINT_0) | \
 246    (1ULL << INT_ILL_TRANS) | \
 247    (1ULL << INT_UNALIGN_DATA) | \
 248    (1ULL << INT_DTLB_MISS) | \
 249    (1ULL << INT_DTLB_ACCESS) | \
 250    0)
 251#define NON_SYNC_INTERRUPTS ( \
 252    (1ULL << INT_MEM_ERROR) | \
 253    (1ULL << INT_IDN_FIREWALL) | \
 254    (1ULL << INT_UDN_FIREWALL) | \
 255    (1ULL << INT_TILE_TIMER) | \
 256    (1ULL << INT_AUX_TILE_TIMER) | \
 257    (1ULL << INT_IDN_TIMER) | \
 258    (1ULL << INT_UDN_TIMER) | \
 259    (1ULL << INT_IDN_AVAIL) | \
 260    (1ULL << INT_UDN_AVAIL) | \
 261    (1ULL << INT_IPI_3) | \
 262    (1ULL << INT_IPI_2) | \
 263    (1ULL << INT_IPI_1) | \
 264    (1ULL << INT_IPI_0) | \
 265    (1ULL << INT_PERF_COUNT) | \
 266    (1ULL << INT_AUX_PERF_COUNT) | \
 267    (1ULL << INT_INTCTRL_3) | \
 268    (1ULL << INT_INTCTRL_2) | \
 269    (1ULL << INT_INTCTRL_1) | \
 270    (1ULL << INT_INTCTRL_0) | \
 271    (1ULL << INT_BOOT_ACCESS) | \
 272    (1ULL << INT_WORLD_ACCESS) | \
 273    (1ULL << INT_I_ASID) | \
 274    (1ULL << INT_D_ASID) | \
 275    (1ULL << INT_DOUBLE_FAULT) | \
 276    0)
 277#endif /* !__ASSEMBLER__ */
 278#endif /* !__ARCH_INTERRUPTS_H__ */
 279