Changeset b5eb1ee in mainline for arch/ia32/src


Ignore:
Timestamp:
2005-07-20T14:50:07Z (20 years ago)
Author:
Jakub Vana <jakub.vana@…>
Branches:
lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
76857d1
Parents:
51029384
Message:

Error word support debuging and testing passed with #NM & #GP exceptions.

Location:
arch/ia32/src
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • arch/ia32/src/asm.S

    r51029384 rb5eb1ee  
    118118        test $0xe0,%cl;
    119119        jnz 0f;
     120        and $0x1f,%cl;
    120121        shl %cl,%eax;
    121122        and $ERROR_WORD_INTERRUPT_LIST,%eax;
    122         jnz 0f;
     123        jz 0f;
    123124
    124125        popa;
     
    358359.global utext
    359360utext:
     361        xor %ax,%ax;
     362        mov %ax,%ds;
     363        mov %ax,%es;
     364        mov %ax,%fs;
     365        mov %ax,%gs;
    3603660:
    361367#       movl $0xdeadbeaf, %eax
    362         int $48
     368  int $48
     369        cli;
     370        sti;
    363371        jmp 0b
    364372        # not reached
  • arch/ia32/src/interrupt.c

    r51029384 rb5eb1ee  
    8080void gp_fault(__u8 n, __u32 stack[])
    8181{
    82         printf("stack[0]=%X, %%eip=%X, %%cs=%X, flags=%X\n", stack[0], stack[1], stack[2], stack[3]);
     82        printf("ERROR_WORD=%X, %%eip=%X, %%cs=%X, flags=%X\n", stack[0], stack[1], stack[2], stack[3]);
    8383        printf("%%eax=%L, %%ebx=%L, %%ecx=%L, %%edx=%L,\n%%edi=%L, %%esi=%L, %%ebp=%L, %%esp=%L\n", stack[-2], stack[-5], stack[-3], stack[-4], stack[-9], stack[-8], stack[-1], stack);
    8484        printf("stack: %X, %X, %X, %X\n", stack[4], stack[5], stack[6], stack[7]);
    85         panic("general protection fault\n");
     85        //panic("general protection fault\n");
     86        stack[1]++;
    8687}
    8788
    8889void ss_fault(__u8 n, __u32 stack[])
    8990{
    90         printf("stack[0]=%X, %%eip=%X, %%cs=%X, flags=%X\n", stack[0], stack[1], stack[2], stack[3]);
     91        printf("ERROR_WORD=%X, %%eip=%X, %%cs=%X, flags=%X\n", stack[0], stack[1], stack[2], stack[3]);
    9192        printf("%%eax=%L, %%ebx=%L, %%ecx=%L, %%edx=%L,\n%%edi=%L, %%esi=%L, %%ebp=%L, %%esp=%L\n", stack[-2], stack[-5], stack[-3], stack[-4], stack[-9], stack[-8], stack[-1], stack);
    9293        printf("stack: %X, %X, %X, %X\n", stack[4], stack[5], stack[6], stack[7]);
     
    112113{
    113114        printf("page fault address: %X\n", read_cr2());
    114         printf("stack[0]=%X, %%eip=%X, %%cs=%X, flags=%X\n", stack[0], stack[1], stack[2], stack[3]);
     115        printf("ERROR_WORD=%X, %%eip=%X, %%cs=%X, flags=%X\n", stack[0], stack[1], stack[2], stack[3]);
    115116        printf("%%eax=%L, %%ebx=%L, %%ecx=%L, %%edx=%L,\n%%edi=%L, %%esi=%L, %%ebp=%L, %%esp=%L\n", stack[-2], stack[-5], stack[-3], stack[-4], stack[-9], stack[-8], stack[-1], stack);
    116117        printf("stack: %X, %X, %X, %X\n", stack[4], stack[5], stack[6], stack[7]);
Note: See TracChangeset for help on using the changeset viewer.