Rev 164 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 164 | Rev 168 | ||
---|---|---|---|
Line 3... | Line 3... | ||
3 | reg_eflags equ ebp+12 |
3 | reg_eflags equ ebp+12 |
4 | reg_esp equ ebp+16 |
4 | reg_esp equ ebp+16 |
5 | reg_ss equ ebp+20 |
5 | reg_ss equ ebp+20 |
6 | fpu_ctrl equ ebp-28 |
6 | ;fpu_ctrl equ ebp-28 |
7 | 7 | ||
8 | align 4 |
8 | align 4 |
Line 9... | Line 9... | ||
9 | except_16: |
9 | except_16: |
10 | push ebp |
10 | push ebp |
11 | mov ebp, esp |
11 | mov ebp, esp |
12 | sub esp, 28 |
12 | ; sub esp, 28 |
13 | 13 | ||
Line 14... | Line 14... | ||
14 | push eax |
14 | push eax |
15 | push ebx |
15 | push ebx |
16 | push ecx |
16 | push ecx |
17 | push edx |
17 | push edx |
Line 39... | Line 39... | ||
39 | iretd |
39 | iretd |
40 | 40 | ||
Line 41... | Line 41... | ||
41 | .default: |
41 | .default: |
- | 42 | pop edx |
|
- | 43 | pop ecx |
|
- | 44 | pop ebx |
|
- | 45 | pop eax |
|
- | 46 | leave |
|
Line -... | Line 47... | ||
- | 47 | ||
- | 48 | save_ring3_context ;debugger support |
|
- | 49 | ||
- | 50 | mov bl, 16 |
|
- | 51 | jmp exc_c |
|
42 | 52 | ||
43 | fnstenv [fpu_ctrl] |
53 | ; fnstenv [fpu_ctrl] |
44 | fnclex |
54 | ; fnclex |
45 | or word [fpu_ctrl], 0111111b |
55 | ; or word [fpu_ctrl], 0111111b |
- | 56 | ; fldenv [fpu_ctrl] |
|
- | 57 | ||
- | 58 | ; pop edx |
|
- | 59 | ; pop ecx |
|
- | 60 | ; pop ebx |
|
- | 61 | ; pop eax |
|
- | 62 | ||
- | 63 | ; leave |
|
- | 64 | ; iretd |
|
- | 65 | ||
- | 66 | align 16 |
|
- | 67 | except_19: |
|
- | 68 | push ebp |
|
- | 69 | mov ebp, esp |
|
- | 70 | ||
- | 71 | push eax |
|
- | 72 | push ebx |
|
- | 73 | push ecx |
|
- | 74 | push edx |
|
- | 75 | ||
- | 76 | mov ebx, [ss:CURRENT_TASK] |
|
- | 77 | shl ebx, 8 |
|
- | 78 | ||
- | 79 | mov eax, [ss:ebx+PROC_BASE+APPDATA.sse_handler] |
|
- | 80 | test eax, eax |
|
- | 81 | jz .default |
|
- | 82 | ||
- | 83 | mov ecx, [reg_eip] |
|
- | 84 | mov edx, [reg_esp] |
|
- | 85 | sub edx, 4 |
|
- | 86 | mov [ss:edx+new_app_base], ecx |
|
- | 87 | mov [reg_esp], edx |
|
Line 46... | Line 88... | ||
46 | fldenv [fpu_ctrl] |
88 | mov dword [reg_eip], eax |
47 | 89 | ||
48 | pop edx |
90 | pop edx |
49 | pop ecx |
91 | pop ecx |
Line 50... | Line 92... | ||
50 | pop ebx |
92 | pop ebx |
51 | pop eax |
93 | pop eax |
Line -... | Line 94... | ||
- | 94 | ||
- | 95 | leave |
|
- | 96 | iretd |
|
- | 97 | ||
- | 98 | .default: |
|
- | 99 | pop edx |
|
- | 100 | pop ecx |
|
- | 101 | pop ebx |
|
- | 102 | pop eax |
|
- | 103 | leave |
|
- | 104 | ||
Line 52... | Line 105... | ||
52 | 105 | save_ring3_context ;debugger support |
|
53 | leave |
106 | |
54 | iretd |
107 | mov bl, 19 |
55 | 108 | jmp exc_c |
|
56 | 109 | ||
57 | restore reg_eip |
110 | restore reg_eip |