Subversion Repositories HelenOS-historic

Compare Revisions

Ignore whitespace Rev 1007 → Rev 1008

/kernel/trunk/generic/src/mm/tlb.c
132,6 → 132,8
count_t count;
int i;
ASSERT(CPU);
CPU->tlb_active = 0;
spinlock_lock(&tlblock);
spinlock_unlock(&tlblock);
/kernel/trunk/arch/ia32/src/asm.S
80,8 → 80,15
.macro handler i n
push %eax
 
# Test if this is interrupt with error word or not
movl $(1<<\i), %eax
/*
* Test if this is interrupt with error word or not.
* Be careful about width of the shift.
*/
.iflt \i-32
movl $(1<<\i), %eax
.else
movl $0, %eax
.endif
andl $ERROR_WORD_INTERRUPT_LIST,%eax
 
/*
/kernel/trunk/arch/ia32/src/interrupt.c
49,22 → 49,27
void (* enable_irqs_function)(__u16 irqmask) = NULL;
void (* eoi_function)(void) = NULL;
 
#define PRINT_INFO_ERRCODE(istate) do { \
char *symbol = get_symtab_entry(istate->eip); \
if (!symbol) \
symbol = ""; \
printf("----------------EXCEPTION OCCURED----------------\n"); \
printf("%%eip: %X (%s)\n",istate->eip,symbol); \
printf("ERROR_WORD=%X\n", istate->error_word); \
printf("%%cs=%X,flags=%X\n", istate->cs, istate->eflags); \
printf("%%eax=%X, %%ebx=%X, %%ecx=%X, %%edx=%X\n",\
istate->eax,istate->ebx,istate->ecx,istate->edx); \
printf("%%esi=%X, %%edi=%X, %%ebp=%X, %%esp=%X\n",\
istate->esi,istate->edi,istate->ebp,istate->esp); \
printf("stack: %X, %X, %X, %X\n", istate->stack[0], istate->stack[1], istate->stack[2], istate->stack[3]); \
printf(" %X, %X, %X, %X\n", istate->stack[4], istate->stack[5], istate->stack[6], istate->stack[7]); \
} while(0)
static void PRINT_INFO_ERRCODE(istate_t *istate)
{
char *symbol = get_symtab_entry(istate->eip);
 
if (!symbol)
symbol = "";
 
if (CPU)
printf("----------------EXCEPTION OCCURED (cpu%d)----------------\n", CPU->id);
else
printf("----------------EXCEPTION OCCURED----------------\n");
printf("%%eip: %X (%s)\n",istate->eip,symbol);
printf("ERROR_WORD=%X\n", istate->error_word);
printf("%%cs=%X,flags=%X\n", istate->cs, istate->eflags);
printf("%%eax=%X, %%ebx=%X, %%ecx=%X, %%edx=%X\n", istate->eax,istate->ebx,istate->ecx,istate->edx);
printf("%%esi=%X, %%edi=%X, %%ebp=%X, %%esp=%X\n", istate->esi,istate->edi,istate->ebp,istate->esp);
printf("stack: %X, %X, %X, %X\n", istate->stack[0], istate->stack[1], istate->stack[2], istate->stack[3]);
printf(" %X, %X, %X, %X\n", istate->stack[4], istate->stack[5], istate->stack[6], istate->stack[7]);
}
 
void null_interrupt(int n, istate_t *istate)
{
PRINT_INFO_ERRCODE(istate);