Subversion Repositories Kolibri OS

Rev

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