Changes in kernel/arch/arm32/src/exception.c [8cf4823:4bd3f45] in mainline
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
kernel/arch/arm32/src/exception.c
r8cf4823 r4bd3f45 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.