Subversion Repositories Kolibri OS

Rev

Rev 1375 | Go to most recent revision | Only display areas with differences | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 1375 Rev 1376
1
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
1
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
2
;;                                                              ;;
2
;;                                                              ;;
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
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
7
 
7
 
8
$Revision: 1375 $
8
$Revision: 1376 $
9
 
9
 
10
; Old style system call converter
10
; Old style system call converter
11
align 16
11
align 16
12
cross_order:
12
cross_order:
13
        ; load all registers in crossed order
13
        ; load all registers in crossed order
14
        mov     eax, ebx
14
        mov     eax, ebx
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
        call    dword [servetable+edi*4]
20
        call    dword [servetable+edi*4]
21
        ret
21
        ret
22
 
22
 
23
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
23
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
24
;;                                                            ;;
24
;;                                                            ;;
25
;;                     SYSENTER ENTRY                         ;;
25
;;                     SYSENTER ENTRY                         ;;
26
;;                                                            ;;
26
;;                                                            ;;
27
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
27
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
28
 
28
 
29
align 32
29
align 32
30
sysenter_entry:
30
sysenter_entry:
31
        ; Íàñòðàèâàåì ñòåê
31
        ; Íàñòðàèâàåì ñòåê
32
        mov     esp, [ss:tss._esp0]
32
        mov     esp, [ss:tss._esp0]
33
        sti
33
        sti
34
        push    ebp                     ; save app esp + 4
34
        push    ebp                     ; save app esp + 4
35
        mov     ebp, [ebp]              ; ebp - original ebp
35
        mov     ebp, [ebp]              ; ebp - original ebp
36
        ;------------------
36
        ;------------------
37
        pushad
37
        pushad
38
        cld
38
        cld
39
 
39
 
40
        movzx   eax, al
40
        movzx   eax, al
41
        call    dword [servetable2 + eax * 4]
41
        call    dword [servetable2 + eax * 4]
42
 
42
 
43
        popad
43
        popad
44
        ;------------------
44
        ;------------------
45
        xchg    ecx, [ss:esp]           ; â âåðøèí ñòåêà - app ecx, ecx - app esp + 4
45
        xchg    ecx, [ss:esp]           ; â âåðøèí ñòåêà - app ecx, ecx - app esp + 4
46
        sub     ecx, 4
46
        sub     ecx, 4
47
        xchg    edx, [ecx]              ; edx - return point, & save original edx
47
        xchg    edx, [ecx]              ; edx - return point, & save original edx
48
        push    edx
48
        push    edx
49
        mov     edx, [ss:esp + 4]
49
        mov     edx, [ss:esp + 4]
50
        mov     [ecx + 4], edx          ; save original ecx
50
        mov     [ecx + 4], edx          ; save original ecx
51
        pop     edx
51
        pop     edx
52
        sysexit
52
        sysexit
53
 
53
 
54
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
54
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
55
;;                                                            ;;
55
;;                                                            ;;
56
;;                   SYSTEM CALL ENTRY                        ;;
56
;;                   SYSTEM CALL ENTRY                        ;;
57
;;                                                            ;;
57
;;                                                            ;;
58
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
58
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
59
 
59
 
60
align 16
60
align 16
61
i40:
61
i40:
62
        pushad
62
        pushad
63
        cld
63
        cld
64
        movzx   eax, al
64
        movzx   eax, al
65
        call    dword [servetable2 + eax * 4]
65
        call    dword [servetable2 + eax * 4]
66
        popad
66
        popad
67
        iretd
67
        iretd
68
 
68
 
69
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
69
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
70
;;                                                            ;;
70
;;                                                            ;;
71
;;                     SYSCALL ENTRY                          ;;
71
;;                     SYSCALL ENTRY                          ;;
72
;;                                                            ;;
72
;;                                                            ;;
73
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
73
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
74
align 32
74
align 32
75
syscall_entry:
75
syscall_entry:
76
  ;     cli                 syscall clear IF
76
  ;     cli                 syscall clear IF
77
        xchg    esp, [ss:tss._esp0]
77
        xchg    esp, [ss:tss._esp0]
78
        push    ecx
78
        push    ecx
79
        lea     ecx, [esp+4]
79
        lea     ecx, [esp+4]
80
        xchg    ecx, [ss:tss._esp0]
80
        xchg    ecx, [ss:tss._esp0]
81
        sti
81
        sti
82
        push    ecx
82
        push    ecx
83
        mov     ecx, [ecx]
83
        mov     ecx, [ecx]
84
        ;------------------
84
        ;------------------
85
        pushad
85
        pushad
86
        cld
86
        cld
87
 
87
 
88
        movzx   eax, al
88
        movzx   eax, al
89
        call    dword [servetable2 + eax * 4]
89
        call    dword [servetable2 + eax * 4]
90
 
90
 
91
        popad
91
        popad
92
        ;------------------
92
        ;------------------
93
        mov     ecx, [ss:esp+4]
93
        mov     ecx, [ss:esp+4]
94
        pop     esp
94
        pop     esp
95
        sysret
95
        sysret
96
 
96
 
97
iglobal
97
iglobal
98
  ;;;;;;;;;;;;;;;;;;;;;;;;;;;;
98
  ;;;;;;;;;;;;;;;;;;;;;;;;;;;;
99
  ;; SYSTEM FUNCTIONS TABLE ;;
99
  ;; SYSTEM FUNCTIONS TABLE ;;
100
  ;;;;;;;;;;;;;;;;;;;;;;;;;;;;
100
  ;;;;;;;;;;;;;;;;;;;;;;;;;;;;
101
 
101
 
102
  align 4
102
  align 4
103
  servetable:
103
  servetable:
104
 
104
 
105
      dd 0
105
      dd 0
106
      dd 0
106
      dd 0
107
      dd 0
107
      dd 0
108
      dd 0
108
      dd 0
109
      dd 0
109
      dd 0
110
      dd 0
110
      dd 0
111
      dd 0
111
      dd 0
112
      dd 0
112
      dd 0
113
      dd 0
113
      dd 0
114
      dd 0
114
      dd 0
115
      dd 0
115
      dd 0
116
      dd 0
116
      dd 0
117
      dd 0
117
      dd 0
118
      dd 0
118
      dd 0
119
      dd 0
119
      dd 0
120
      dd 0
120
      dd 0
121
      dd 0
121
      dd 0
122
      dd 0
122
      dd 0
123
      dd 0
123
      dd 0
124
      dd 0
124
      dd 0
125
      dd 0
125
      dd 0
126
      dd 0
126
      dd 0
127
      dd 0
127
      dd 0
128
      dd 0
128
      dd 0
129
      dd 0
129
      dd 0
130
      dd 0
130
      dd 0
131
      dd 0
131
      dd 0
132
      dd 0
132
      dd 0
133
      dd 0
133
      dd 0
134
      dd 0
134
      dd 0
135
      dd 0
135
      dd 0
136
      dd 0
136
      dd 0
137
      dd 0
137
      dd 0
138
      dd 0
138
      dd 0
139
      dd 0
139
      dd 0
140
      dd 0
140
      dd 0
141
      dd 0
141
      dd 0
142
      dd 0
142
      dd 0
143
      dd 0
143
      dd 0
144
      dd 0
144
      dd 0
145
      dd 0
145
      dd 0
146
      dd 0
146
      dd 0
147
      dd 0
147
      dd 0
148
      dd 0
148
      dd 0
149
      dd 0
149
      dd 0
150
      dd 0
150
      dd 0
151
      dd 0
151
      dd 0
152
      dd 0
152
      dd 0
153
      dd 0
153
      dd 0
154
      dd 0
154
      dd 0
155
      dd 0
155
      dd 0
156
      dd 0
156
      dd 0
157
      dd 0
157
      dd 0
158
      dd socket                  ; 53-Socket interface
158
      dd 0
159
      dd 0
159
      dd 0
160
      dd sound_interface         ; 55-Sound interface
160
      dd sound_interface         ; 55-Sound interface
161
      dd 0
161
      dd 0
162
      dd 0
162
      dd 0
163
      dd file_system             ; 58-Common file system interface
163
      dd file_system             ; 58-Common file system interface
164
      dd 0
164
      dd 0
165
      dd sys_IPC                 ; 60-Inter Process Communication
165
      dd sys_IPC                 ; 60-Inter Process Communication
166
      dd sys_gs                  ; 61-Direct graphics access
166
      dd sys_gs                  ; 61-Direct graphics access
167
      dd sys_pci                 ; 62-PCI functions
167
      dd sys_pci                 ; 62-PCI functions
168
      dd sys_msg_board           ; 63-System message board
168
      dd sys_msg_board           ; 63-System message board
169
      dd 0
169
      dd 0
170
      dd syscall_putimage_palette; 65-PutImagePalette
170
      dd syscall_putimage_palette; 65-PutImagePalette
171
      dd sys_process_def         ; 66-Process definitions - keyboard
171
      dd sys_process_def         ; 66-Process definitions - keyboard
172
      dd sys_window_move         ; 67-Window move or resize
172
      dd sys_window_move         ; 67-Window move or resize
173
      dd 0
173
      dd 0
174
      dd 0
174
      dd 0
175
      dd file_system_lfn         ; 70-Common file system interface, version 2
175
      dd file_system_lfn         ; 70-Common file system interface, version 2
176
 
176
 
177
  ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
177
  ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
178
  ;; NEW SYSTEM FUNCTIONS TABLE ;;
178
  ;; NEW SYSTEM FUNCTIONS TABLE ;;
179
  ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
179
  ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
180
  align 4
180
  align 4
181
  servetable2:
181
  servetable2:
182
 
182
 
183
      dd sys_drawwindow          ; 0-DrawWindow
183
      dd sys_drawwindow          ; 0-DrawWindow
184
      dd syscall_setpixel        ; 1-SetPixel
184
      dd syscall_setpixel        ; 1-SetPixel
185
      dd sys_getkey              ; 2-GetKey
185
      dd sys_getkey              ; 2-GetKey
186
      dd sys_clock               ; 3-GetTime
186
      dd sys_clock               ; 3-GetTime
187
      dd syscall_writetext       ; 4-WriteText
187
      dd syscall_writetext       ; 4-WriteText
188
      dd delay_hs                ; 5-DelayHs
188
      dd delay_hs                ; 5-DelayHs
189
      dd syscall_openramdiskfile ; 6-OpenRamdiskFile
189
      dd syscall_openramdiskfile ; 6-OpenRamdiskFile
190
      dd syscall_putimage        ; 7-PutImage
190
      dd syscall_putimage        ; 7-PutImage
191
      dd syscall_button          ; 8-DefineButton
191
      dd syscall_button          ; 8-DefineButton
192
      dd sys_cpuusage            ; 9-GetProcessInfo
192
      dd sys_cpuusage            ; 9-GetProcessInfo
193
      dd sys_waitforevent        ; 10-WaitForEvent
193
      dd sys_waitforevent        ; 10-WaitForEvent
194
      dd sys_getevent            ; 11-CheckForEvent
194
      dd sys_getevent            ; 11-CheckForEvent
195
      dd sys_redrawstat          ; 12-BeginDraw and EndDraw
195
      dd sys_redrawstat          ; 12-BeginDraw and EndDraw
196
      dd syscall_drawrect        ; 13-DrawRect
196
      dd syscall_drawrect        ; 13-DrawRect
197
      dd syscall_getscreensize   ; 14-GetScreenSize
197
      dd syscall_getscreensize   ; 14-GetScreenSize
198
      dd sys_background          ; 15-bgr
198
      dd sys_background          ; 15-bgr
199
      dd sys_cachetodiskette     ; 16-FlushFloppyCache
199
      dd sys_cachetodiskette     ; 16-FlushFloppyCache
200
      dd sys_getbutton           ; 17-GetButton
200
      dd sys_getbutton           ; 17-GetButton
201
      dd sys_system              ; 18-System Services
201
      dd sys_system              ; 18-System Services
202
      dd paleholder              ; 19-reserved
202
      dd paleholder              ; 19-reserved
203
      dd sys_midi                ; 20-ResetMidi and OutputMidi
203
      dd sys_midi                ; 20-ResetMidi and OutputMidi
204
      dd sys_setup               ; 21-SetMidiBase,SetKeymap,SetShiftKeymap,.
204
      dd sys_setup               ; 21-SetMidiBase,SetKeymap,SetShiftKeymap,.
205
      dd sys_settime 	         ; 22-setting date,time,clock and alarm-clock
205
      dd sys_settime 	         ; 22-setting date,time,clock and alarm-clock
206
      dd sys_wait_event_timeout  ; 23-TimeOutWaitForEvent
206
      dd sys_wait_event_timeout  ; 23-TimeOutWaitForEvent
207
      dd syscall_cdaudio         ; 24-PlayCdTrack,StopCd and GetCdPlaylist
207
      dd syscall_cdaudio         ; 24-PlayCdTrack,StopCd and GetCdPlaylist
208
      dd undefined_syscall       ; 25-reserved
208
      dd undefined_syscall       ; 25-reserved
209
      dd sys_getsetup            ; 26-GetMidiBase,GetKeymap,GetShiftKeymap,.
209
      dd sys_getsetup            ; 26-GetMidiBase,GetKeymap,GetShiftKeymap,.
210
      dd undefined_syscall       ; 27-reserved
210
      dd undefined_syscall       ; 27-reserved
211
      dd undefined_syscall       ; 28-reserved
211
      dd undefined_syscall       ; 28-reserved
212
      dd sys_date                ; 29-GetDate
212
      dd sys_date                ; 29-GetDate
213
      dd sys_current_directory   ; 30-Get/SetCurrentDirectory
213
      dd sys_current_directory   ; 30-Get/SetCurrentDirectory
214
      dd undefined_syscall       ; 31-reserved
214
      dd undefined_syscall       ; 31-reserved
215
      dd undefined_syscall       ; 32-reserved
215
      dd undefined_syscall       ; 32-reserved
216
      dd undefined_syscall       ; 33-reserved
216
      dd undefined_syscall       ; 33-reserved
217
      dd undefined_syscall       ; 34-reserved
217
      dd undefined_syscall       ; 34-reserved
218
      dd syscall_getpixel        ; 35-GetPixel
218
      dd syscall_getpixel        ; 35-GetPixel
219
      dd syscall_getarea         ; 36-GetArea
219
      dd syscall_getarea         ; 36-GetArea
220
      dd readmousepos            ; 37-GetMousePosition_ScreenRelative,.
220
      dd readmousepos            ; 37-GetMousePosition_ScreenRelative,.
221
      dd syscall_drawline        ; 38-DrawLine
221
      dd syscall_drawline        ; 38-DrawLine
222
      dd sys_getbackground       ; 39-GetBackgroundSize,ReadBgrData,.
222
      dd sys_getbackground       ; 39-GetBackgroundSize,ReadBgrData,.
223
      dd set_app_param           ; 40-WantEvents
223
      dd set_app_param           ; 40-WantEvents
224
      dd syscall_getirqowner     ; 41-GetIrqOwner
224
      dd syscall_getirqowner     ; 41-GetIrqOwner
225
      dd get_irq_data            ; 42-ReadIrqData
225
      dd get_irq_data            ; 42-ReadIrqData
226
      dd sys_outport             ; 43-SendDeviceData
226
      dd sys_outport             ; 43-SendDeviceData
227
      dd sys_programirq          ; 44-ProgramIrqs
227
      dd sys_programirq          ; 44-ProgramIrqs
228
      dd reserve_free_irq        ; 45-ReserveIrq and FreeIrq
228
      dd reserve_free_irq        ; 45-ReserveIrq and FreeIrq
229
      dd syscall_reserveportarea ; 46-ReservePortArea and FreePortArea
229
      dd syscall_reserveportarea ; 46-ReservePortArea and FreePortArea
230
      dd display_number          ; 47-WriteNum
230
      dd display_number          ; 47-WriteNum
231
      dd syscall_display_settings ; 48-SetRedrawType and SetButtonType
231
      dd syscall_display_settings ; 48-SetRedrawType and SetButtonType
232
      dd sys_apm		 ; 49-Advanced Power Management (APM)
232
      dd sys_apm		 ; 49-Advanced Power Management (APM)
233
      dd syscall_set_window_shape ; 50-Window shape & scale
233
      dd syscall_set_window_shape ; 50-Window shape & scale
234
      dd syscall_threads         ; 51-Threads
234
      dd syscall_threads         ; 51-Threads
235
      dd stack_driver_stat       ; 52-Stack driver status
235
      dd undefined_syscall       ; 52-Stack driver status
236
      dd cross_order             ; 53-Socket interface
236
      dd undefined_syscall       ; 53-Socket interface
237
      dd undefined_syscall       ; 54-reserved
237
      dd undefined_syscall       ; 54-reserved
238
      dd cross_order             ; 55-Sound interface
238
      dd cross_order             ; 55-Sound interface
239
      dd undefined_syscall       ; 56-reserved
239
      dd undefined_syscall       ; 56-reserved
240
      dd sys_pcibios             ; 57-PCI BIOS32
240
      dd sys_pcibios             ; 57-PCI BIOS32
241
      dd cross_order             ; 58-Common file system interface
241
      dd cross_order             ; 58-Common file system interface
242
      dd undefined_syscall       ; 59-reserved
242
      dd undefined_syscall       ; 59-reserved
243
      dd cross_order             ; 60-Inter Process Communication
243
      dd cross_order             ; 60-Inter Process Communication
244
      dd cross_order             ; 61-Direct graphics access
244
      dd cross_order             ; 61-Direct graphics access
245
      dd cross_order             ; 62-PCI functions
245
      dd cross_order             ; 62-PCI functions
246
      dd cross_order             ; 63-System message board
246
      dd cross_order             ; 63-System message board
247
      dd sys_resize_app_memory   ; 64-Resize application memory usage
247
      dd sys_resize_app_memory   ; 64-Resize application memory usage
248
      dd cross_order             ; 65-PutImagePalette
248
      dd cross_order             ; 65-PutImagePalette
249
      dd cross_order             ; 66-Process definitions - keyboard
249
      dd cross_order             ; 66-Process definitions - keyboard
250
      dd cross_order             ; 67-Window move or resize
250
      dd cross_order             ; 67-Window move or resize
251
      dd f68			 ; 68-Some internal services
251
      dd f68			 ; 68-Some internal services
252
      dd sys_debug_services      ; 69-Debug
252
      dd sys_debug_services      ; 69-Debug
253
      dd cross_order             ; 70-Common file system interface, version 2
253
      dd cross_order             ; 70-Common file system interface, version 2
254
      dd syscall_windowsettings  ; 71-Window settings
254
      dd syscall_windowsettings  ; 71-Window settings
255
      dd sys_sendwindowmsg       ; 72-Send window message
255
      dd sys_sendwindowmsg       ; 72-Send window message
-
 
256
      dd sys_network		 ; 73-Network stack
-
 
257
      dd sys_socket		 ; 74-Sockets
-
 
258
      dd sys_protocols		 ; 75-Protocols
256
        times 255 - ( ($-servetable2) /4 )  dd undefined_syscall
259
        times 255 - ( ($-servetable2) /4 )  dd undefined_syscall
257
      dd sys_end                 ; -1-end application
260
      dd sys_end                 ; -1-end application
258
 
261
 
259
endg
262
endg