Changes in kernel/arch/arm32/src/ras.c [9d58539:b0c2075] in mainline
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
kernel/arch/arm32/src/ras.c
r9d58539 rb0c2075 51 51 void ras_init(void) 52 52 { 53 uintptr_t frame; 54 55 frame = (uintptr_t) frame_alloc(ONE_FRAME, 56 FRAME_ATOMIC | FRAME_HIGHMEM); 53 uintptr_t frame = 54 frame_alloc(1, FRAME_ATOMIC | FRAME_HIGHMEM, 0); 57 55 if (!frame) 58 frame = (uintptr_t) frame_alloc(ONE_FRAME, FRAME_LOWMEM); 56 frame = frame_alloc(1, FRAME_LOWMEM, 0); 57 59 58 ras_page = (uintptr_t *) km_map(frame, 60 59 PAGE_SIZE, PAGE_READ | PAGE_WRITE | PAGE_USER | PAGE_CACHEABLE); 61 60 62 61 memsetb(ras_page, PAGE_SIZE, 0); 63 62 ras_page[RAS_START] = 0; … … 67 66 void ras_check(unsigned int n, istate_t *istate) 68 67 { 69 uintptr_t rewrite_pc = istate->pc; 68 bool restart_needed = false; 69 uintptr_t restart_pc = 0; 70 70 71 71 if (istate_from_uspace(istate)) { … … 73 73 if ((ras_page[RAS_START] < istate->pc) && 74 74 (ras_page[RAS_END] > istate->pc)) { 75 rewrite_pc = ras_page[RAS_START]; 75 restart_needed = true; 76 restart_pc = ras_page[RAS_START]; 76 77 } 77 78 ras_page[RAS_START] = 0; 78 79 ras_page[RAS_END] = 0xffffffff; 79 } 80 } 80 81 } 81 82 82 83 exc_dispatch(n, istate); 83 84 istate->pc = rewrite_pc;84 if (restart_needed) 85 istate->pc = restart_pc; 85 86 } 86 87
Note:
See TracChangeset
for help on using the changeset viewer.