Ignore:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • kernel/arch/arm32/src/ras.c

    r9d58539 rb0c2075  
    5151void ras_init(void)
    5252{
    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);
    5755        if (!frame)
    58                 frame = (uintptr_t) frame_alloc(ONE_FRAME, FRAME_LOWMEM);
     56                frame = frame_alloc(1, FRAME_LOWMEM, 0);
     57       
    5958        ras_page = (uintptr_t *) km_map(frame,
    6059            PAGE_SIZE, PAGE_READ | PAGE_WRITE | PAGE_USER | PAGE_CACHEABLE);
    61 
     60       
    6261        memsetb(ras_page, PAGE_SIZE, 0);
    6362        ras_page[RAS_START] = 0;
     
    6766void ras_check(unsigned int n, istate_t *istate)
    6867{
    69         uintptr_t rewrite_pc = istate->pc;
     68        bool restart_needed = false;
     69        uintptr_t restart_pc = 0;
    7070
    7171        if (istate_from_uspace(istate)) {
     
    7373                        if ((ras_page[RAS_START] < istate->pc) &&
    7474                            (ras_page[RAS_END] > istate->pc)) {
    75                                 rewrite_pc = ras_page[RAS_START];
     75                                restart_needed = true;
     76                                restart_pc = ras_page[RAS_START];
    7677                        }
    7778                        ras_page[RAS_START] = 0;
    7879                        ras_page[RAS_END] = 0xffffffff;
    79                 }       
     80                }
    8081        }
    8182
    8283        exc_dispatch(n, istate);
    83 
    84         istate->pc = rewrite_pc;
     84        if (restart_needed)
     85                istate->pc = restart_pc;
    8586}
    8687
Note: See TracChangeset for help on using the changeset viewer.