Changeset 0ab362c in mainline for kernel/arch/arm32/src/exception.c
- Timestamp:
- 2012-11-22T14:36:04Z (12 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- e32720ff
- Parents:
- 1f7753a (diff), 0f2c80a (diff)
Note: this is a merge changeset, the changes displayed below correspond to the merge itself.
Use the(diff)
links above to see all the changes relative to each parent. - File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
kernel/arch/arm32/src/exception.c
r1f7753a r0ab362c 117 117 118 118 #ifdef HIGH_EXCEPTION_VECTORS 119 /** Activates use of high exception vectors addresses. */ 119 /** Activates use of high exception vectors addresses. 120 * 121 * "High vectors were introduced into some implementations of ARMv4 and are 122 * required in ARMv6 implementations. High vectors allow the exception vector 123 * locations to be moved from their normal address range 0x00000000-0x0000001C 124 * at the bottom of the 32-bit address space, to an alternative address range 125 * 0xFFFF0000-0xFFFF001C near the top of the address space. These alternative 126 * locations are known as the high vectors. 127 * 128 * Prior to ARMv6, it is IMPLEMENTATION DEFINED whether the high vectors are 129 * supported. When they are, a hardware configuration input selects whether 130 * the normal vectors or the high vectors are to be used from 131 * reset." ARM Architecture Reference Manual A2.6.11 (p. 64 in the PDF). 132 * 133 * ARM920T (gta02) TRM A2.3.5 (PDF p. 36) and ARM926EJ-S (icp) 2.3.2 (PDF p. 42) 134 * say that armv4 an armv5 chips that we support implement this. 135 */ 120 136 static void high_vectors(void) 121 137 { 122 uint32_t control_reg; 123 138 uint32_t control_reg = 0; 124 139 asm volatile ( 125 140 "mrc p15, 0, %[control_reg], c1, c0" … … 128 143 129 144 /* switch on the high vectors bit */ 130 control_reg |= CP15_R1_HIGH_VECTORS_ BIT;145 control_reg |= CP15_R1_HIGH_VECTORS_EN; 131 146 132 147 asm volatile ( … … 153 168 void exception_init(void) 154 169 { 170 // TODO check for availability of high vectors for <= armv5 155 171 #ifdef HIGH_EXCEPTION_VECTORS 156 172 high_vectors();
Note:
See TracChangeset
for help on using the changeset viewer.