⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 hal_intr.h

📁 ecos为实时嵌入式操作系统
💻 H
📖 第 1 页 / 共 2 页
字号:
#ifndef CYGONCE_HAL_INTR_H#define CYGONCE_HAL_INTR_H//===========================================================================////      hal_intr.h////      HAL Interrupt and clock support////===========================================================================//####COPYRIGHTBEGIN####//// -------------------------------------------// The contents of this file are subject to the Cygnus eCos Public License// Version 1.0 (the "License"); you may not use this file except in// compliance with the License.  You may obtain a copy of the License at// http://sourceware.cygnus.com/ecos// // Software distributed under the License is distributed on an "AS IS"// basis, WITHOUT WARRANTY OF ANY KIND, either express or implied.  See the// License for the specific language governing rights and limitations under// the License.// // The Original Code is eCos - Embedded Cygnus Operating System, released// September 30, 1998.// // The Initial Developer of the Original Code is Cygnus.  Portions created// by Cygnus are Copyright (C) 1998,1999 Cygnus Solutions.  All Rights Reserved.// -------------------------------------------////####COPYRIGHTEND####//===========================================================================//#####DESCRIPTIONBEGIN####//// Author(s):    nickg, gthomas, hmt// Contributors: nickg, gthomas, hmt,//               jlarmour// Date:         1999-02-20// Purpose:      Define Interrupt support// Description:  The macros defined here provide the HAL APIs for handling//               interrupts and the clock.//              // Usage://               #include <cyg/hal/hal_intr.h>//               ...//              ////####DESCRIPTIONEND####////===========================================================================#include <pkgconf/hal.h>#include <pkgconf/hal_sparclite.h>#include <cyg/infra/cyg_type.h>//---------------------------------------------------------------------------// SPARClite exception vectors.//// A note on nomenclature://// SPARClite has traps: interrupts are traps, and so are exceptions.// There are 255 of them in the hardware: this HAL's trampoline code decodes// them into the 27 listed below as CYGNUM_HAL_VECTOR_xxx.// They are handled uniformly in the trampoline code in the sense that// each vector has a VSR which is called in the same way.// Interrupts (vectors 1-15) have one VSR by default, exceptions (vectors// 16-26) another.// The interrupt VSR sets up a C stack and calls the corresponding ISR with// the required arguments; this ABI is mandated by the kernel.// The exception VSR sets up a C stack and calls the corresponding XSR// (just an entry in the ISR[sic] table) with similar arguments, such that// it (by default) can call the kernel's cyg_hal_deliver_exception().// // So:// CYGNUM_HAL_VSR_MAX/MIN/COUNT describe the number of VSR entries *and*// the number of ISR (and associated data) entries (including those which// are XSRs, just a special case of ISRs).// CYGNUM_HAL_ISR_MAX/MIN/COUNT describe the number of interrupt sources// and is used for bounds checking in kernel interrupt objects.// CYGNUM_HAL_EXCEPTION_MAX/MIN/COUNT describe vector numbers which have// by default the exception VSR and default XSR installed.// These correspond to VSRs and the values are the ones to use for// HAL_VSR_GET/SET#define CYGNUM_HAL_VECTOR_RESERVED_0       0#define CYGNUM_HAL_VECTOR_INTERRUPT_1      1 // NB: least important#define CYGNUM_HAL_VECTOR_INTERRUPT_2      2 // (lowest priority)#define CYGNUM_HAL_VECTOR_INTERRUPT_3      3#define CYGNUM_HAL_VECTOR_INTERRUPT_4      4#define CYGNUM_HAL_VECTOR_INTERRUPT_5      5#define CYGNUM_HAL_VECTOR_INTERRUPT_6      6#define CYGNUM_HAL_VECTOR_INTERRUPT_7      7#define CYGNUM_HAL_VECTOR_INTERRUPT_8      8#define CYGNUM_HAL_VECTOR_INTERRUPT_9      9#define CYGNUM_HAL_VECTOR_INTERRUPT_10    10#define CYGNUM_HAL_VECTOR_INTERRUPT_11    11#define CYGNUM_HAL_VECTOR_INTERRUPT_12    12#define CYGNUM_HAL_VECTOR_INTERRUPT_13    13#define CYGNUM_HAL_VECTOR_INTERRUPT_14    14 // (highest priority)#define CYGNUM_HAL_VECTOR_INTERRUPT_15    15 // NB: most important (NMI)#define CYG_VECTOR_IS_INTERRUPT(v)        (15 >= (v))#define CYGNUM_HAL_VECTOR_USER_TRAP       16 // Ticc instructions#define CYGNUM_HAL_VECTOR_FETCH_ABORT     17 // trap type 1#define CYGNUM_HAL_VECTOR_ILLEGAL_OP      18 // trap type 2#define CYGNUM_HAL_VECTOR_PRIV_OP         19 // tt 3: privileged op#define CYGNUM_HAL_VECTOR_NOFPCP          20 // tt 4,36: FP or coproc#define CYGNUM_HAL_VECTOR_RESERVED_1      21 // (not used)#define CYGNUM_HAL_VECTOR_RESERVED_2      22 // (not used)#define CYGNUM_HAL_VECTOR_UNALIGNED       23 // tt 7: unaligned memory access#define CYGNUM_HAL_VECTOR_TT_EIGHT        24 // tt 8: not defined#define CYGNUM_HAL_VECTOR_DATA_ABORT      25 // tt 9: read/write failed                                        #define CYGNUM_HAL_VECTOR_OTHERS          26 // any others#define CYGNUM_HAL_VSR_MIN                 0#define CYGNUM_HAL_VSR_MAX                26#define CYGNUM_HAL_VSR_COUNT              27// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -// Interrupt vectors. These are the values used with HAL_INTERRUPT_ATTACH()// et al#define CYGNUM_HAL_INTERRUPT_RESERVED_0   CYGNUM_HAL_VECTOR_RESERVED_0#define CYGNUM_HAL_INTERRUPT_1            CYGNUM_HAL_VECTOR_INTERRUPT_1#define CYGNUM_HAL_INTERRUPT_2            CYGNUM_HAL_VECTOR_INTERRUPT_2#define CYGNUM_HAL_INTERRUPT_3            CYGNUM_HAL_VECTOR_INTERRUPT_3#define CYGNUM_HAL_INTERRUPT_4            CYGNUM_HAL_VECTOR_INTERRUPT_4#define CYGNUM_HAL_INTERRUPT_5            CYGNUM_HAL_VECTOR_INTERRUPT_5#define CYGNUM_HAL_INTERRUPT_6            CYGNUM_HAL_VECTOR_INTERRUPT_6#define CYGNUM_HAL_INTERRUPT_7            CYGNUM_HAL_VECTOR_INTERRUPT_7#define CYGNUM_HAL_INTERRUPT_8            CYGNUM_HAL_VECTOR_INTERRUPT_8#define CYGNUM_HAL_INTERRUPT_9            CYGNUM_HAL_VECTOR_INTERRUPT_9#define CYGNUM_HAL_INTERRUPT_10           CYGNUM_HAL_VECTOR_INTERRUPT_10#define CYGNUM_HAL_INTERRUPT_11           CYGNUM_HAL_VECTOR_INTERRUPT_11#define CYGNUM_HAL_INTERRUPT_12           CYGNUM_HAL_VECTOR_INTERRUPT_12#define CYGNUM_HAL_INTERRUPT_13           CYGNUM_HAL_VECTOR_INTERRUPT_13#define CYGNUM_HAL_INTERRUPT_14           CYGNUM_HAL_VECTOR_INTERRUPT_14#define CYGNUM_HAL_INTERRUPT_15           CYGNUM_HAL_VECTOR_INTERRUPT_15#define CYGNUM_HAL_ISR_MIN                 0#define CYGNUM_HAL_ISR_MAX                15#define CYGNUM_HAL_ISR_COUNT              16// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -// Exception vectors. These are the values used when passed out to an// external exception handler using cyg_hal_deliver_exception()// They can also be used with HAL_INTERRUPT_ATTACH() et al to install// different XSRs.#define CYGNUM_HAL_EXCEPTION_TRAP               CYGNUM_HAL_VECTOR_USER_TRAP#define CYGNUM_HAL_EXCEPTION_CODE_ACCESS        CYGNUM_HAL_VECTOR_FETCH_ABORT#define CYGNUM_HAL_EXCEPTION_ILLEGAL_INSTRUCTION \                                                CYGNUM_HAL_VECTOR_ILLEGAL_OP#define CYGNUM_HAL_EXCEPTION_PRIVILEGED_INSTRUCTION \                                                CYGNUM_HAL_VECTOR_PRIV_OP#define CYGNUM_HAL_EXCEPTION_FPU_NOT_AVAIL      CYGNUM_HAL_VECTOR_NOFPCP#define CYGNUM_HAL_EXCEPTION_RESERVED1          CYGNUM_HAL_VECTOR_RESERVED1#define CYGNUM_HAL_EXCEPTION_RESERVED2          CYGNUM_HAL_VECTOR_RESERVED2#define CYGNUM_HAL_EXCEPTION_DATA_UNALIGNED_ACCESS \                                                CYGNUM_HAL_VECTOR_UNALIGNED#define CYGNUM_HAL_EXCEPTION_TT_EIGHT           CYGNUM_HAL_VECTOR_TT_EIGHT#define CYGNUM_HAL_EXCEPTION_DATA_ACCESS        CYGNUM_HAL_VECTOR_DATA_ABORT#define CYGNUM_HAL_EXCEPTION_OTHERS             CYGNUM_HAL_VECTOR_OTHERS#define CYGNUM_HAL_EXCEPTION_MIN          16#define CYGNUM_HAL_EXCEPTION_MAX          (16 + 10)#define CYGNUM_HAL_EXCEPTION_COUNT        (1 + CYGNUM_HAL_EXCEPTION_MAX - \                                           CYGNUM_HAL_EXCEPTION_MIN)//---------------------------------------------------------------------------// (Null) Translation from a wider space of interrupt sources:#define HAL_TRANSLATE_VECTOR(_vector_,_index_) _index_ = (_vector_)//---------------------------------------------------------------------------// Static data used by HAL// VSR tableexternC volatile CYG_ADDRESS    hal_vsr_table[CYGNUM_HAL_VSR_COUNT];// ISR + XSR tables - so VSR count.

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -