Subversion Repositories Kolibri OS

Rev

Rev 164 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
164 serge 1
 
2
 
3
reg_eflags    equ ebp+12
4
reg_esp       equ ebp+16
5
reg_ss        equ ebp+20
6
;fpu_ctrl      equ ebp-28
7
168 serge 8
align 4
164 serge 9
 
10
           push ebp
11
           mov ebp, esp
12
;           sub esp, 28
13
168 serge 14
           push eax
164 serge 15
 
16
           push ecx
17
           push edx
18
19
           mov ebx, [ss:CURRENT_TASK]
20
 
21
22
           mov eax, [ss:ebx+PROC_BASE+APPDATA.fpu_handler]
23
 
24
           jz .default
25
26
           mov ecx, [reg_eip]
27
 
28
           sub edx, 4
29
           mov [ss:edx+new_app_base], ecx
30
           mov [reg_esp], edx
31
           mov dword [reg_eip], eax
32
33
           pop edx
34
 
35
           pop ebx
36
           pop eax
37
38
           leave
39
 
40
41
.default:
42
 
43
           pop ecx
168 serge 44
           pop ebx
45
           pop eax
46
           leave
47
48
           save_ring3_context     ;debugger support
164 serge 49
 
168 serge 50
           mov bl, 16
164 serge 51
 
168 serge 52
53
;           fnstenv [fpu_ctrl]
54
 
55
;           or word [fpu_ctrl], 0111111b
56
;           fldenv [fpu_ctrl]
57
58
;          pop edx
59
 
60
;          pop ebx
61
;          pop eax
62
63
;           leave
64
 
65
66
align 16
67
 
68
           push ebp
69
           mov ebp, esp
70
71
           push eax
72
 
73
           push ecx
74
           push edx
75
76
           mov ebx, [ss:CURRENT_TASK]
77
 
78
79
           mov eax, [ss:ebx+PROC_BASE+APPDATA.sse_handler]
80
 
81
           jz .default
82
83
           mov ecx, [reg_eip]
84
 
85
           sub edx, 4
86
           mov [ss:edx+new_app_base], ecx
87
           mov [reg_esp], edx
88
           mov dword [reg_eip], eax
89
90
           pop edx
91
 
164 serge 92
           pop ebx
93
           pop eax
94
95
           leave
96
 
97
98
.default:
99
 
168 serge 100
           pop ecx
101
           pop ebx
102
           pop eax
103
           leave
104
105
           save_ring3_context     ;debugger support
164 serge 106
 
168 serge 107
           mov bl, 19
108
 
109
110
restore reg_eip
111
 
164 serge 112
restore reg_eflags
113
restore reg_esp
114
restore reg_ss
115
;restore fpu_ctrl
116