42,11 → 42,9 |
#include <typedefs.h> |
#include <arch/types.h> |
#include <interrupt.h> |
#include <arch/debug_print/print.h> |
|
//TODO: remove in final version |
#include "../aux_print/printf.h" |
|
|
// localy used types |
/** |
* Decribes structure of fault status register in coprocessor 15 |
155,11 → 153,11 |
//TODO: remove in final version |
static void print_istate(istate_t* istate); |
static void print_istate(istate_t* istate) { |
aux_printf("\nIstate dump:\n"); |
aux_printf(" r0:%X r1:%X r2:%X r3:%X\n", istate->r0, istate->r1, istate->r2, istate->r3); |
aux_printf(" r4:%X r5:%X r6:%X r7:%X\n", istate->r4, istate->r5, istate->r6, istate->r7); |
aux_printf(" r8:%X r8:%X r10:%X r11:%X\n", istate->r8, istate->r9, istate->r10, istate->r11); |
aux_printf(" r12:%X sp:%X lr:%X spsr:%X\n", istate->r12, istate->sp, istate->lr, istate->spsr); |
dprintf("\nIstate dump:\n"); |
dprintf(" r0:%X r1:%X r2:%X r3:%X\n", istate->r0, istate->r1, istate->r2, istate->r3); |
dprintf(" r4:%X r5:%X r6:%X r7:%X\n", istate->r4, istate->r5, istate->r6, istate->r7); |
dprintf(" r8:%X r8:%X r10:%X r11:%X\n", istate->r8, istate->r9, istate->r10, istate->r11); |
dprintf(" r12:%X sp:%X lr:%X spsr:%X\n", istate->r12, istate->sp, istate->lr, istate->spsr); |
} |
|
/** |
202,16 → 200,16 |
// get instruction op code |
instruction_t i_code = *(tmp.instr); |
|
aux_printf("get_instruction_memmory_access\n"); |
aux_printf(" i_code:%X\n",i_code); |
aux_printf(" i_code.condition:%d\n", i_code.condition); |
aux_printf(" i_code.instr_type:%d\n",i_code.instr_type); |
aux_printf(" i_code.opcode:%d\n",i_code.opcode); |
aux_printf(" i_code.acess:%d\n", i_code.access); |
aux_printf(" i_code.dummy:%d\n", i_code.dummy); |
aux_printf(" i_code.bits567%d\n", i_code.bits567); |
aux_printf(" i_code.bit4:%d\n", i_code.bit4); |
aux_printf(" i_code.dummy1:%d\n", i_code.dummy1); |
dprintf("get_instruction_memmory_access\n"); |
dprintf(" i_code:%X\n",i_code); |
dprintf(" i_code.condition:%d\n", i_code.condition); |
dprintf(" i_code.instr_type:%d\n",i_code.instr_type); |
dprintf(" i_code.opcode:%d\n",i_code.opcode); |
dprintf(" i_code.acess:%d\n", i_code.access); |
dprintf(" i_code.dummy:%d\n", i_code.dummy); |
dprintf(" i_code.bits567%d\n", i_code.bits567); |
dprintf(" i_code.bit4:%d\n", i_code.bit4); |
dprintf(" i_code.dummy1:%d\n", i_code.dummy1); |
|
|
// undefined instructions ... (or special instructions) |
277,10 → 275,10 |
pf_access_t access = get_memmory_access_type( istate->lr, page); |
|
print_istate(istate); |
aux_printf(" page fault : ip:%X, va:%X, status:%x(%x), access:%d\n", istate->lr, page, fsr.status,fsr, access); |
dprintf(" page fault : ip:%X, va:%X, status:%x(%x), access:%d\n", istate->lr, page, fsr.status,fsr, access); |
|
int ret = as_page_fault(page, access, istate); |
aux_printf(" as_page_fault ret:%d\n", ret); |
dprintf(" as_page_fault ret:%d\n", ret); |
if (ret == AS_PF_FAULT) { |
fault_if_from_uspace(istate, "Page fault: %#x", page); |
|
301,10 → 299,10 |
void prefetch_abourt(int n, istate_t *istate) { |
// Prefetch can be made be bkpt instruction |
print_istate(istate); |
aux_printf(" prefetch_abourt ... instruction on adress:%x can't be fetched\n", istate->lr); |
dprintf(" prefetch_abourt ... instruction on adress:%x can't be fetched\n", istate->lr); |
|
int ret = as_page_fault(istate->lr, PF_ACCESS_EXEC, istate); |
aux_printf(" as_page_fault ret:%d\n", ret); |
dprintf(" as_page_fault ret:%d\n", ret); |
if (ret == AS_PF_FAULT) { |
panic("page fault - instruction fetch at addr:%X\n", istate->lr); |
} |