/*
 * Copyright 2011 Tilera Corporation. All Rights Reserved.
 *
 *   This program is free software; you can redistribute it and/or
 *   modify it under the terms of the GNU General Public License
 *   as published by the Free Software Foundation, version 2.
 *
 *   This program is distributed in the hope that it will be useful, but
 *   WITHOUT ANY WARRANTY; without even the implied warranty of
 *   MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE, GOOD TITLE or
 *   NON INFRINGEMENT.  See the GNU General Public License for
 *   more details.
 */

#ifndef __ARCH_INTERRUPTS_H__
#define __ARCH_INTERRUPTS_H__

/** Mask for an interrupt. */
#ifdef __ASSEMBLER__
/* Note: must handle breaking interrupts into high and low words manually. */
#define INT_MASK(intno) (1 << (intno))
#else
#define INT_MASK(intno) (1ULL << (intno))
#endif


/** Where a given interrupt executes */
#define INTERRUPT_VECTOR(i, pl) (0xFC000000 + ((pl) << 24) + ((i) << 8))

/** Where to store a vector for a given interrupt. */
#define USER_INTERRUPT_VECTOR(i) INTERRUPT_VECTOR(i, 0)

/** The base address of user-level interrupts. */
#define USER_INTERRUPT_VECTOR_BASE INTERRUPT_VECTOR(0, 0)


/** Additional synthetic interrupt. */
#define INT_BREAKPOINT (63)

#define INT_MEM_ERROR    0
#define INT_SINGLE_STEP_3    1
#define INT_SINGLE_STEP_2    2
#define INT_SINGLE_STEP_1    3
#define INT_SINGLE_STEP_0    4
#define INT_IDN_COMPLETE    5
#define INT_UDN_COMPLETE    6
#define INT_ITLB_MISS    7
#define INT_ILL    8
#define INT_GPV    9
#define INT_IDN_ACCESS   10
#define INT_UDN_ACCESS   11
#define INT_SWINT_3   12
#define INT_SWINT_2   13
#define INT_SWINT_1   14
#define INT_SWINT_0   15
#define INT_ILL_TRANS   16
#define INT_UNALIGN_DATA   17
#define INT_DTLB_MISS   18
#define INT_DTLB_ACCESS   19
#define INT_IDN_FIREWALL   20
#define INT_UDN_FIREWALL   21
#define INT_TILE_TIMER   22
#define INT_AUX_TILE_TIMER   23
#define INT_IDN_TIMER   24
#define INT_UDN_TIMER   25
#define INT_IDN_AVAIL   26
#define INT_UDN_AVAIL   27
#define INT_IPI_3   28
#define INT_IPI_2   29
#define INT_IPI_1   30
#define INT_IPI_0   31
#define INT_PERF_COUNT   32
#define INT_AUX_PERF_COUNT   33
#define INT_INTCTRL_3   34
#define INT_INTCTRL_2   35
#define INT_INTCTRL_1   36
#define INT_INTCTRL_0   37
#define INT_BOOT_ACCESS   38
#define INT_WORLD_ACCESS   39
#define INT_I_ASID   40
#define INT_D_ASID   41
#define INT_DOUBLE_FAULT   42

#define NUM_INTERRUPTS 43

#ifndef __ASSEMBLER__
#define QUEUED_INTERRUPTS ( \
    INT_MASK(INT_MEM_ERROR) | \
    INT_MASK(INT_IDN_COMPLETE) | \
    INT_MASK(INT_UDN_COMPLETE) | \
    INT_MASK(INT_IDN_FIREWALL) | \
    INT_MASK(INT_UDN_FIREWALL) | \
    INT_MASK(INT_TILE_TIMER) | \
    INT_MASK(INT_AUX_TILE_TIMER) | \
    INT_MASK(INT_IDN_TIMER) | \
    INT_MASK(INT_UDN_TIMER) | \
    INT_MASK(INT_IDN_AVAIL) | \
    INT_MASK(INT_UDN_AVAIL) | \
    INT_MASK(INT_IPI_3) | \
    INT_MASK(INT_IPI_2) | \
    INT_MASK(INT_IPI_1) | \
    INT_MASK(INT_IPI_0) | \
    INT_MASK(INT_PERF_COUNT) | \
    INT_MASK(INT_AUX_PERF_COUNT) | \
    INT_MASK(INT_INTCTRL_3) | \
    INT_MASK(INT_INTCTRL_2) | \
    INT_MASK(INT_INTCTRL_1) | \
    INT_MASK(INT_INTCTRL_0) | \
    INT_MASK(INT_BOOT_ACCESS) | \
    INT_MASK(INT_WORLD_ACCESS) | \
    INT_MASK(INT_I_ASID) | \
    INT_MASK(INT_D_ASID) | \
    INT_MASK(INT_DOUBLE_FAULT) | \
    0)
#define NONQUEUED_INTERRUPTS ( \
    INT_MASK(INT_SINGLE_STEP_3) | \
    INT_MASK(INT_SINGLE_STEP_2) | \
    INT_MASK(INT_SINGLE_STEP_1) | \
    INT_MASK(INT_SINGLE_STEP_0) | \
    INT_MASK(INT_ITLB_MISS) | \
    INT_MASK(INT_ILL) | \
    INT_MASK(INT_GPV) | \
    INT_MASK(INT_IDN_ACCESS) | \
    INT_MASK(INT_UDN_ACCESS) | \
    INT_MASK(INT_SWINT_3) | \
    INT_MASK(INT_SWINT_2) | \
    INT_MASK(INT_SWINT_1) | \
    INT_MASK(INT_SWINT_0) | \
    INT_MASK(INT_ILL_TRANS) | \
    INT_MASK(INT_UNALIGN_DATA) | \
    INT_MASK(INT_DTLB_MISS) | \
    INT_MASK(INT_DTLB_ACCESS) | \
    0)
#define CRITICAL_MASKED_INTERRUPTS ( \
    INT_MASK(INT_MEM_ERROR) | \
    INT_MASK(INT_SINGLE_STEP_3) | \
    INT_MASK(INT_SINGLE_STEP_2) | \
    INT_MASK(INT_SINGLE_STEP_1) | \
    INT_MASK(INT_SINGLE_STEP_0) | \
    INT_MASK(INT_IDN_COMPLETE) | \
    INT_MASK(INT_UDN_COMPLETE) | \
    INT_MASK(INT_IDN_FIREWALL) | \
    INT_MASK(INT_UDN_FIREWALL) | \
    INT_MASK(INT_TILE_TIMER) | \
    INT_MASK(INT_AUX_TILE_TIMER) | \
    INT_MASK(INT_IDN_TIMER) | \
    INT_MASK(INT_UDN_TIMER) | \
    INT_MASK(INT_IDN_AVAIL) | \
    INT_MASK(INT_UDN_AVAIL) | \
    INT_MASK(INT_IPI_3) | \
    INT_MASK(INT_IPI_2) | \
    INT_MASK(INT_IPI_1) | \
    INT_MASK(INT_IPI_0) | \
    INT_MASK(INT_PERF_COUNT) | \
    INT_MASK(INT_AUX_PERF_COUNT) | \
    INT_MASK(INT_INTCTRL_3) | \
    INT_MASK(INT_INTCTRL_2) | \
    INT_MASK(INT_INTCTRL_1) | \
    INT_MASK(INT_INTCTRL_0) | \
    0)
#define CRITICAL_UNMASKED_INTERRUPTS ( \
    INT_MASK(INT_ITLB_MISS) | \
    INT_MASK(INT_ILL) | \
    INT_MASK(INT_GPV) | \
    INT_MASK(INT_IDN_ACCESS) | \
    INT_MASK(INT_UDN_ACCESS) | \
    INT_MASK(INT_SWINT_3) | \
    INT_MASK(INT_SWINT_2) | \
    INT_MASK(INT_SWINT_1) | \
    INT_MASK(INT_SWINT_0) | \
    INT_MASK(INT_ILL_TRANS) | \
    INT_MASK(INT_UNALIGN_DATA) | \
    INT_MASK(INT_DTLB_MISS) | \
    INT_MASK(INT_DTLB_ACCESS) | \
    INT_MASK(INT_BOOT_ACCESS) | \
    INT_MASK(INT_WORLD_ACCESS) | \
    INT_MASK(INT_I_ASID) | \
    INT_MASK(INT_D_ASID) | \
    INT_MASK(INT_DOUBLE_FAULT) | \
    0)
#define MASKABLE_INTERRUPTS ( \
    INT_MASK(INT_MEM_ERROR) | \
    INT_MASK(INT_SINGLE_STEP_3) | \
    INT_MASK(INT_SINGLE_STEP_2) | \
    INT_MASK(INT_SINGLE_STEP_1) | \
    INT_MASK(INT_SINGLE_STEP_0) | \
    INT_MASK(INT_IDN_COMPLETE) | \
    INT_MASK(INT_UDN_COMPLETE) | \
    INT_MASK(INT_IDN_FIREWALL) | \
    INT_MASK(INT_UDN_FIREWALL) | \
    INT_MASK(INT_TILE_TIMER) | \
    INT_MASK(INT_AUX_TILE_TIMER) | \
    INT_MASK(INT_IDN_TIMER) | \
    INT_MASK(INT_UDN_TIMER) | \
    INT_MASK(INT_IDN_AVAIL) | \
    INT_MASK(INT_UDN_AVAIL) | \
    INT_MASK(INT_IPI_3) | \
    INT_MASK(INT_IPI_2) | \
    INT_MASK(INT_IPI_1) | \
    INT_MASK(INT_IPI_0) | \
    INT_MASK(INT_PERF_COUNT) | \
    INT_MASK(INT_AUX_PERF_COUNT) | \
    INT_MASK(INT_INTCTRL_3) | \
    INT_MASK(INT_INTCTRL_2) | \
    INT_MASK(INT_INTCTRL_1) | \
    INT_MASK(INT_INTCTRL_0) | \
    0)
#define UNMASKABLE_INTERRUPTS ( \
    INT_MASK(INT_ITLB_MISS) | \
    INT_MASK(INT_ILL) | \
    INT_MASK(INT_GPV) | \
    INT_MASK(INT_IDN_ACCESS) | \
    INT_MASK(INT_UDN_ACCESS) | \
    INT_MASK(INT_SWINT_3) | \
    INT_MASK(INT_SWINT_2) | \
    INT_MASK(INT_SWINT_1) | \
    INT_MASK(INT_SWINT_0) | \
    INT_MASK(INT_ILL_TRANS) | \
    INT_MASK(INT_UNALIGN_DATA) | \
    INT_MASK(INT_DTLB_MISS) | \
    INT_MASK(INT_DTLB_ACCESS) | \
    INT_MASK(INT_BOOT_ACCESS) | \
    INT_MASK(INT_WORLD_ACCESS) | \
    INT_MASK(INT_I_ASID) | \
    INT_MASK(INT_D_ASID) | \
    INT_MASK(INT_DOUBLE_FAULT) | \
    0)
#define SYNC_INTERRUPTS ( \
    INT_MASK(INT_SINGLE_STEP_3) | \
    INT_MASK(INT_SINGLE_STEP_2) | \
    INT_MASK(INT_SINGLE_STEP_1) | \
    INT_MASK(INT_SINGLE_STEP_0) | \
    INT_MASK(INT_IDN_COMPLETE) | \
    INT_MASK(INT_UDN_COMPLETE) | \
    INT_MASK(INT_ITLB_MISS) | \
    INT_MASK(INT_ILL) | \
    INT_MASK(INT_GPV) | \
    INT_MASK(INT_IDN_ACCESS) | \
    INT_MASK(INT_UDN_ACCESS) | \
    INT_MASK(INT_SWINT_3) | \
    INT_MASK(INT_SWINT_2) | \
    INT_MASK(INT_SWINT_1) | \
    INT_MASK(INT_SWINT_0) | \
    INT_MASK(INT_ILL_TRANS) | \
    INT_MASK(INT_UNALIGN_DATA) | \
    INT_MASK(INT_DTLB_MISS) | \
    INT_MASK(INT_DTLB_ACCESS) | \
    0)
#define NON_SYNC_INTERRUPTS ( \
    INT_MASK(INT_MEM_ERROR) | \
    INT_MASK(INT_IDN_FIREWALL) | \
    INT_MASK(INT_UDN_FIREWALL) | \
    INT_MASK(INT_TILE_TIMER) | \
    INT_MASK(INT_AUX_TILE_TIMER) | \
    INT_MASK(INT_IDN_TIMER) | \
    INT_MASK(INT_UDN_TIMER) | \
    INT_MASK(INT_IDN_AVAIL) | \
    INT_MASK(INT_UDN_AVAIL) | \
    INT_MASK(INT_IPI_3) | \
    INT_MASK(INT_IPI_2) | \
    INT_MASK(INT_IPI_1) | \
    INT_MASK(INT_IPI_0) | \
    INT_MASK(INT_PERF_COUNT) | \
    INT_MASK(INT_AUX_PERF_COUNT) | \
    INT_MASK(INT_INTCTRL_3) | \
    INT_MASK(INT_INTCTRL_2) | \
    INT_MASK(INT_INTCTRL_1) | \
    INT_MASK(INT_INTCTRL_0) | \
    INT_MASK(INT_BOOT_ACCESS) | \
    INT_MASK(INT_WORLD_ACCESS) | \
    INT_MASK(INT_I_ASID) | \
    INT_MASK(INT_D_ASID) | \
    INT_MASK(INT_DOUBLE_FAULT) | \
    0)
#endif /* !__ASSEMBLER__ */
#endif /* !__ARCH_INTERRUPTS_H__ */
