Rev 75 | Rev 90 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 75 | Rev 84 | ||
---|---|---|---|
Line 83... | Line 83... | ||
83 | 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); |
83 | 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); |
84 | printf("stack: %X, %X, %X, %X\n", stack[4], stack[5], stack[6], stack[7]); |
84 | 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 | } |
86 | } |
87 | 87 | ||
- | 88 | void ss_fault(__u8 n, __u32 stack[]) |
|
- | 89 | { |
|
- | 90 | printf("stack[0]=%X, %%eip=%X, %%cs=%X, flags=%X\n", stack[0], stack[1], stack[2], stack[3]); |
|
- | 91 | 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); |
|
- | 92 | printf("stack: %X, %X, %X, %X\n", stack[4], stack[5], stack[6], stack[7]); |
|
- | 93 | panic("Stack fault\n"); |
|
- | 94 | } |
|
- | 95 | ||
- | 96 | ||
88 | void nm_fault(__u8 n, __u32 stack[]) |
97 | void nm_fault(__u8 n, __u32 stack[]) |
89 | { |
98 | { |
90 | 99 | ||
- | 100 | // printf("-1\n"); |
|
- | 101 | reset_TS_flag(); |
|
91 | if ((CPU->fpu_owner)!=NULL) |
102 | if ((CPU->fpu_owner)!=NULL) |
92 | { |
103 | { |
- | 104 | // printf("owner %X\n",(int)(&((CPU->fpu_owner)->saved_fpu_context))); |
|
93 | fpu_lazy_context_save(&((CPU->fpu_owner)->saved_fpu_context)); |
105 | fpu_lazy_context_save(&((CPU->fpu_owner)->saved_fpu_context)); |
- | 106 | ||
- | 107 | // printf("owner 2\n"); |
|
94 | (CPU->fpu_owner)->fpu_context_engaged=0; /* Enables migration */ |
108 | (CPU->fpu_owner)->fpu_context_engaged=0; /* Enables migration */ |
- | 109 | // printf("owner 3\n"); |
|
- | 110 | ||
95 | } |
111 | } |
96 | 112 | // printf("0\n"); |
|
97 | if(THREAD->fpu_context_exists) fpu_lazy_context_restore(&(THREAD->saved_fpu_context)); |
113 | if(THREAD->fpu_context_exists) fpu_lazy_context_restore(&(THREAD->saved_fpu_context)); |
98 | else {fpu_init();THREAD->fpu_context_exists=1;} |
114 | else {fpu_init();THREAD->fpu_context_exists=1;} |
99 | - | ||
- | 115 | // printf("1\n"); |
|
100 | CPU->fpu_owner=THREAD; |
116 | CPU->fpu_owner=THREAD; |
101 | - | ||
102 | reset_TS_flag(); |
117 | // printf("2\n"); |
103 | 118 | ||
- | 119 | // printf("3\n"); |
|
104 | // panic("#NM fault\n"); |
120 | // panic("#NM fault\n"); |
105 | } |
121 | } |
106 | 122 | ||
107 | 123 | ||
108 | 124 |