Rev 1505 | Rev 1587 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 1505 | Rev 1551 | ||
---|---|---|---|
Line 3... | Line 3... | ||
3 | ;; Copyright (C) KolibriOS team 2004-2007. All rights reserved. ;; |
3 | ;; Copyright (C) KolibriOS team 2004-2007. All rights reserved. ;; |
4 | ;; Distributed under terms of the GNU General Public License ;; |
4 | ;; Distributed under terms of the GNU General Public License ;; |
5 | ;; ;; |
5 | ;; ;; |
6 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; |
6 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; |
Line 7... | Line 7... | ||
7 | 7 | ||
Line 8... | Line 8... | ||
8 | $Revision: 1497 $ |
8 | $Revision: 1551 $ |
9 | 9 | ||
10 | ; Old style system call converter |
10 | ; Old style system call converter |
11 | align 16 |
11 | align 16 |
Line 15... | Line 15... | ||
15 | mov ebx, ecx |
15 | mov ebx, ecx |
16 | mov ecx, edx |
16 | mov ecx, edx |
17 | mov edx, esi |
17 | mov edx, esi |
18 | mov esi, edi |
18 | mov esi, edi |
19 | movzx edi, byte[esp+28 + 4] |
19 | movzx edi, byte[esp+28 + 4] |
- | 20 | sub edi, 53 ; all zeroes before |
|
20 | call dword [servetable+edi*4] |
21 | call dword [servetable+edi*4] |
21 | ret |
22 | ret |
Line 22... | Line 23... | ||
22 | 23 | ||
23 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; |
24 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; |
24 | ;; ;; |
25 | ;; ;; |
25 | ;; SYSENTER ENTRY ;; |
26 | ;; SYSENTER ENTRY ;; |
26 | ;; ;; |
27 | ;; (not used on AMD systems) ;; |
Line 27... | Line 28... | ||
27 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; |
28 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; |
28 | 29 | ||
29 | align 32 |
30 | ;align 32 |
30 | sysenter_entry: |
31 | ;sysenter_entry: |
31 | ; Íàñòðàèâàåì ñòåê |
32 | ; ; Íàñòðàèâàåì ñòåê |
32 | mov esp, [ss:tss._esp0] |
33 | ; mov esp, [ss:tss._esp0] |
33 | sti |
34 | ; sti |
34 | push ebp ; save app esp + 4 |
35 | ; push ebp ; save app esp + 4 |
35 | mov ebp, [ebp] ; ebp - original ebp |
36 | ; mov ebp, [ebp] ; ebp - original ebp |
36 | ;------------------ |
37 | ; ;------------------ |
37 | pushad |
38 | ; pushad |
38 | cld |
39 | ; cld |
39 | 40 | ; |
|
40 | movzx eax, al |
41 | ; movzx eax, al |
41 | call dword [servetable2 + eax * 4] |
42 | ; call dword [servetable2 + eax * 4] |
42 | 43 | ||
43 | popad |
44 | ; popad |
44 | ;------------------ |
45 | ; ;------------------ |
45 | xchg ecx, [ss:esp] ; â âåðøèí ñòåêà - app ecx, ecx - app esp + 4 |
46 | ; xchg ecx, [ss:esp] ; â âåðøèí ñòåêà - app ecx, ecx - app esp + 4 |
46 | sub ecx, 4 |
47 | ; sub ecx, 4 |
47 | xchg edx, [ecx] ; edx - return point, & save original edx |
48 | ; xchg edx, [ecx] ; edx - return point, & save original edx |
48 | push edx |
49 | ; push edx |
49 | mov edx, [ss:esp + 4] |
50 | ; mov edx, [ss:esp + 4] |
50 | mov [ecx + 4], edx ; save original ecx |
51 | ; mov [ecx + 4], edx ; save original ecx |
Line 51... | Line 52... | ||
51 | pop edx |
52 | ; pop edx |
52 | sysexit |
53 | ; sysexit |
53 | 54 | ||
54 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; |
55 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; |
Line 59... | Line 60... | ||
59 | 60 | ||
60 | align 16 |
61 | align 16 |
61 | i40: |
62 | i40: |
62 | pushad |
63 | pushad |
63 | cld |
64 | cld |
64 | movzx eax, al |
65 | and eax, 0x07F |
65 | call dword [servetable2 + eax * 4] |
66 | call dword [servetable2 + eax * 4] |
66 | popad |
67 | popad |
Line 67... | Line 68... | ||
67 | iretd |
68 | iretd |
Line 71... | Line 72... | ||
71 | ;; SYSCALL ENTRY ;; |
72 | ;; SYSCALL ENTRY ;; |
72 | ;; ;; |
73 | ;; ;; |
73 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; |
74 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; |
74 | align 32 |
75 | align 32 |
75 | syscall_entry: |
76 | syscall_entry: |
76 | ; cli syscall clear IF |
- | |
77 | xchg esp, [ss:tss._esp0] |
- | |
78 | push ecx |
77 | ; push ecx |
79 | lea ecx, [esp+4] |
- | |
80 | xchg ecx, [ss:tss._esp0] |
- | |
81 | sti |
78 | sti |
82 | push ecx |
79 | xor eax, 3 |
83 | mov ecx, [ecx] |
80 | call dword [servetable3 + eax * 4] |
84 | ;------------------ |
- | |
85 | pushad |
- | |
86 | cld |
- | |
Line 87... | Line -... | ||
87 | - | ||
88 | movzx eax, al |
- | |
89 | call dword [servetable2 + eax * 4] |
- | |
90 | - | ||
91 | popad |
- | |
92 | ;------------------ |
- | |
93 | mov ecx, [ss:esp+4] |
81 | |
94 | pop esp |
82 | ; pop ecx |
Line 95... | Line 83... | ||
95 | sysret |
83 | sysret |
96 | 84 | ||
97 | iglobal |
85 | iglobal |
98 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;; |
86 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;; |
Line 99... | Line 87... | ||
99 | ;; SYSTEM FUNCTIONS TABLE ;; |
87 | ;; SYSTEM FUNCTIONS TABLE ;; |
100 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;; |
88 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;; |
Line 101... | Line -... | ||
101 | - | ||
102 | align 4 |
- | |
103 | servetable: |
- | |
104 | - | ||
105 | dd 0 |
- | |
106 | dd 0 |
- | |
107 | dd 0 |
- | |
108 | dd 0 |
- | |
109 | dd 0 |
- | |
110 | dd 0 |
- | |
111 | dd 0 |
- | |
112 | dd 0 |
- | |
113 | dd 0 |
- | |
114 | dd 0 |
- | |
115 | dd 0 |
- | |
116 | dd 0 |
- | |
117 | dd 0 |
- | |
118 | dd 0 |
- | |
119 | dd 0 |
- | |
120 | dd 0 |
- | |
121 | dd 0 |
- | |
122 | dd 0 |
- | |
123 | dd 0 |
- | |
124 | dd 0 |
- | |
125 | dd 0 |
- | |
126 | dd 0 |
- | |
127 | dd 0 |
- | |
128 | dd 0 |
- | |
129 | dd 0 |
- | |
130 | dd 0 |
- | |
131 | dd 0 |
- | |
132 | dd 0 |
- | |
133 | dd 0 |
- | |
134 | dd 0 |
- | |
135 | dd 0 |
- | |
136 | dd 0 |
- | |
137 | dd 0 |
- | |
138 | dd 0 |
- | |
139 | dd 0 |
- | |
140 | dd 0 |
- | |
141 | dd 0 |
- | |
142 | dd 0 |
- | |
143 | dd 0 |
- | |
144 | dd 0 |
- | |
145 | dd 0 |
- | |
146 | dd 0 |
- | |
147 | dd 0 |
- | |
148 | dd 0 |
- | |
149 | dd 0 |
- | |
150 | dd 0 |
- | |
151 | dd 0 |
- | |
152 | dd 0 |
- | |
153 | dd 0 |
- | |
154 | dd 0 |
89 | |
155 | dd 0 |
90 | align 4 |
156 | dd 0 |
91 | servetable: |
157 | dd 0 |
92 | |
158 | dd socket ; 53-Socket interface |
93 | dd socket ; 53-Socket interface |
Line 244... | Line 179... | ||
244 | dd f68 ; 68-Some internal services |
179 | dd f68 ; 68-Some internal services |
245 | dd sys_debug_services ; 69-Debug |
180 | dd sys_debug_services ; 69-Debug |
246 | dd file_system_lfn ; 70-Common file system interface, version 2 |
181 | dd file_system_lfn ; 70-Common file system interface, version 2 |
247 | dd syscall_window_settings ; 71-Window settings |
182 | dd syscall_window_settings ; 71-Window settings |
248 | dd sys_sendwindowmsg ; 72-Send window message |
183 | dd sys_sendwindowmsg ; 72-Send window message |
249 | times 255 - ( ($-servetable2) /4 ) dd undefined_syscall |
184 | times 127 - ( ($-servetable2) /4 ) dd undefined_syscall |
250 | dd sys_end ; -1-end application |
185 | dd sys_end ; -1-end application |
Line -... | Line 186... | ||
- | 186 | ||
- | 187 | align 4 |
|
- | 188 | servetable3: |
|
- | 189 | ||
- | 190 | dd paleholder ; 0 |
|
- | 191 | dd paleholder ; 1 |
|
- | 192 | dd paleholder ; 2 |
|
- | 193 | dd sys_end ; last |
|
251 | 194 |