Subversion Repositories HelenOS

Compare Revisions

Ignore whitespace Rev 2276 → Rev 2277

/branches/arm/kernel/arch/arm32/include/mm/page.h
276,8 → 276,8
 
extern void page_arch_init(void);
 
extern void prefetch_abourt(int n, istate_t *istate);
extern void data_abourt(int n, istate_t *istate);
extern void prefetch_abort(int n, istate_t *istate);
extern void data_abort(int n, istate_t *istate);
 
#endif /* __ASM__ */
 
/branches/arm/kernel/arch/arm32/src/exception.c
39,6 → 39,7
#include <arch/regutils.h>
#include <interrupt.h>
#include <arch/drivers/gxemul.h>
#include <arch/mm/page.h>
 
#define PREFETCH_OFFSET 0x8
#define BRANCH_OPCODE 0xea000000
137,12 → 138,7
PROCESS_EXCEPTION(EXC_IRQ);
}
 
static void prefetch_abort_exception(int exc_no, istate_t* istate)
{
//aux_puts("(PREFETCH|DATA) ABORT exception caught, not processed.\n");
}
 
 
/** Interrupt Exception handler.
* Determines the sources of interrupt, and calls their handlers.
*/
245,8 → 241,8
install_exception_handlers();
exc_register(EXC_IRQ, "interrupt", (iroutine) irq_exception);
exc_register(EXC_PREFETCH_ABORT, "prefetch abort", (iroutine) prefetch_abort_exception);
exc_register(EXC_DATA_ABORT, "data abort", (iroutine) prefetch_abort_exception);
exc_register(EXC_PREFETCH_ABORT, "prefetch abort", (iroutine) prefetch_abort);
exc_register(EXC_DATA_ABORT, "data abort", (iroutine) data_abort);
/* TODO add next */
}
 
/branches/arm/kernel/arch/arm32/src/mm/page.c
275,7 → 275,7
* \param n number of exception
*/
//TODO: remove debug prints in final tested version
void data_abourt(int n, istate_t *istate) {
void data_abort(int n, istate_t *istate) {
fault_status_t fsr = read_fault_status_register();
uintptr_t page = read_fault_address_register();
 
306,7 → 306,7
* \param istate State of CPU when prefetch abourt occured
* \param n number of exception
*/
void prefetch_abourt(int n, istate_t *istate) {
void prefetch_abort(int n, istate_t *istate) {
// Prefetch can be made be bkpt instruction
print_istate(istate);
dprintf(" prefetch_abourt ... instruction on adress:%x can't be fetched\n", istate->lr);