another directory rename: failstar -> fail
"failstar" sounds like a name for a cruise liner from the 80s. As "*" isn't a desirable part of directory names, just name the whole thing "fail/", the core parts being stored in "fail/core/". Additionally fixing two build system dependency issues: - missing jobserver -> protomessages dependency - broken bochs -> fail dependency (add_custom_target DEPENDS only allows plain file dependencies ... cmake for the win) git-svn-id: https://www4.informatik.uni-erlangen.de/i4svn/danceos/trunk/devel/fail@956 8c4709b5-6ec9-48aa-a5cd-a96041d1645a
This commit is contained in:
120
ovp/armmModel/armExceptionTypes.h
Normal file
120
ovp/armmModel/armExceptionTypes.h
Normal file
@ -0,0 +1,120 @@
|
||||
/*
|
||||
* Copyright (c) 2005-2011 Imperas Software Ltd., www.imperas.com
|
||||
*
|
||||
* YOUR ACCESS TO THE INFORMATION IN THIS MODEL IS CONDITIONAL
|
||||
* UPON YOUR ACCEPTANCE THAT YOU WILL NOT USE OR PERMIT OTHERS
|
||||
* TO USE THE INFORMATION FOR THE PURPOSES OF DETERMINING WHETHER
|
||||
* IMPLEMENTATIONS OF THE ARM ARCHITECTURE INFRINGE ANY THIRD
|
||||
* PARTY PATENTS.
|
||||
*
|
||||
* THE LICENSE BELOW EXTENDS ONLY TO USE OF THE SOFTWARE FOR
|
||||
* MODELING PURPOSES AND SHALL NOT BE CONSTRUED AS GRANTING
|
||||
* A LICENSE TO CREATE A HARDWARE IMPLEMENTATION OF THE
|
||||
* FUNCTIONALITY OF THE SOFTWARE LICENSED HEREUNDER.
|
||||
* YOU MAY USE THE SOFTWARE SUBJECT TO THE LICENSE TERMS BELOW
|
||||
* PROVIDED THAT YOU ENSURE THAT THIS NOTICE IS REPLICATED UNMODIFIED
|
||||
* AND IN ITS ENTIRETY IN ALL DISTRIBUTIONS OF THE SOFTWARE,
|
||||
* MODIFIED OR UNMODIFIED, IN SOURCE CODE OR IN BINARY FORM.
|
||||
*
|
||||
* Licensed under an Imperas Modfied Apache License, Version 2.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://www.ovpworld.org/licenses/OVP_MODIFIED_1.0_APACHE_OPEN_SOURCE_LICENSE_2.0.pdf
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND,
|
||||
* either express or implied.
|
||||
*
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*
|
||||
*/
|
||||
|
||||
#ifndef ARM_EXCEPTION_TYPES_H
|
||||
#define ARM_EXCEPTION_TYPES_H
|
||||
|
||||
//
|
||||
// This enumerates exceptions
|
||||
//
|
||||
typedef enum armExceptNumE {
|
||||
AEN_None = 0,
|
||||
AEN_Reset = 1,
|
||||
AEN_NMI = 2,
|
||||
AEN_HardFault = 3,
|
||||
AEN_MemManage = 4,
|
||||
AEN_BusFault = 5,
|
||||
AEN_UsageFault = 6,
|
||||
AEN_SVCall = 11,
|
||||
AEN_DebugMonitor = 12,
|
||||
AEN_PendSV = 14,
|
||||
AEN_SysTick = 15,
|
||||
AEN_ExternalInt0 = 16,
|
||||
AEN_LAST = 512 // KEEP LAST: for sizing
|
||||
} armExceptNum;
|
||||
|
||||
//
|
||||
// This identifies whether the passed exception is an interrupt (and whether
|
||||
// SCR.SLEEPONEXIT applies to this exception type)
|
||||
//
|
||||
#define EX_IS_INTERRUPT(_E) ((_E)>=AEN_PendSV)
|
||||
|
||||
//
|
||||
// This enumerates the context of a load/store exception
|
||||
//
|
||||
typedef enum armExceptCxtE {
|
||||
AEC_None = 0,
|
||||
AEC_PushStack,
|
||||
AEC_PopStack,
|
||||
AEC_ReadVector,
|
||||
AEC_PreserveFPState
|
||||
} armExceptCxt;
|
||||
|
||||
//
|
||||
// This defines permanently-enabled exceptions
|
||||
//
|
||||
#define ARM_EXCEPT_PERMANENT_ENABLE ( \
|
||||
(1 << AEN_Reset) | \
|
||||
(1 << AEN_NMI) | \
|
||||
(1 << AEN_HardFault) | \
|
||||
(1 << AEN_SVCall) | \
|
||||
(1 << AEN_PendSV) | \
|
||||
(1 << AEN_SysTick) \
|
||||
)
|
||||
|
||||
//
|
||||
// Utility macros for accessing exception bitmasks
|
||||
//
|
||||
#define EX_MASK_INDEX(_N) ((_N)/32)
|
||||
#define EX_MASK_BIT(_N) ((_N)&31)
|
||||
#define EX_MASK_MASK(_N) (1<<EX_MASK_BIT(_N))
|
||||
#define EX_MASK_GET(_M, _N) ((_M[EX_MASK_INDEX(_N)] >> EX_MASK_BIT(_N)) & 1)
|
||||
#define EX_MASK_SET_1(_M, _N) _M[EX_MASK_INDEX(_N)] |= EX_MASK_MASK(_N)
|
||||
#define EX_MASK_SET_0(_M, _N) _M[EX_MASK_INDEX(_N)] &= ~EX_MASK_MASK(_N)
|
||||
|
||||
#define EX_MASK_SET_V(_M, _N, _V) { \
|
||||
EX_MASK_SET_0(_M, _N); \
|
||||
_M[EX_MASK_INDEX(_N)] |= ((_V)<<EX_MASK_BIT(_N)); \
|
||||
}
|
||||
|
||||
//
|
||||
// Masks for the low and high halves of interrupt registers
|
||||
//
|
||||
#define EX_INT_MASK_LO ((1<<AEN_ExternalInt0)-1)
|
||||
#define EX_INT_MASK_HI (~EX_INT_MASK_LO)
|
||||
|
||||
//
|
||||
// Masks for extraction of fields from targetPC possibly specifying exception
|
||||
// return
|
||||
//
|
||||
#define EXC_RETURN_MAGIC 0xf0000000
|
||||
#define EXC_RETURN_TYPE 0x0000000f
|
||||
|
||||
//
|
||||
// Masks for undefined instruction reasons
|
||||
//
|
||||
#define EXC_UNDEF_NOCP 0x00080000
|
||||
#define EXC_UNDEF_UNDEFINSTR 0x00010000
|
||||
|
||||
#endif
|
||||
Reference in New Issue
Block a user