Subversion Repositories Kolibri OS

Rev

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

Rev 1505 Rev 1551
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: 1497 $
8
$Revision: 1551 $
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
	  sub	    edi, 53		; all zeroes before
20
        call    dword [servetable+edi*4]
21
        call    dword [servetable+edi*4]
21
        ret
22
        ret
22
 
23
 
23
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
24
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
24
;;                                                            ;;
25
;;                                                            ;;
25
;;                     SYSENTER ENTRY                         ;;
26
;;                     SYSENTER ENTRY                         ;;
26
;;                                                            ;;
27
;;                                  (not used on AMD systems) ;;
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
51
        pop     edx
52
;        pop     edx
52
        sysexit
53
;        sysexit
53
 
54
 
54
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
55
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
55
;;                                                            ;;
56
;;                                                            ;;
56
;;                   SYSTEM CALL ENTRY                        ;;
57
;;                   SYSTEM CALL ENTRY                        ;;
57
;;                                                            ;;
58
;;                                                            ;;
58
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
59
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
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
67
        iretd
68
        iretd
68
 
69
 
69
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
70
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
70
;;                                                            ;;
71
;;                                                            ;;
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
-
 
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
95
        sysret
83
        sysret
96
 
84
 
97
iglobal
85
iglobal
98
  ;;;;;;;;;;;;;;;;;;;;;;;;;;;;
86
  ;;;;;;;;;;;;;;;;;;;;;;;;;;;;
99
  ;; SYSTEM FUNCTIONS TABLE ;;
87
  ;; SYSTEM FUNCTIONS TABLE ;;
100
  ;;;;;;;;;;;;;;;;;;;;;;;;;;;;
88
  ;;;;;;;;;;;;;;;;;;;;;;;;;;;;
101
 
89
 
102
  align 4
90
  align 4
103
  servetable:
91
  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
-
 
155
      dd 0
-
 
156
      dd 0
-
 
157
      dd 0
92
 
158
      dd socket                  ; 53-Socket interface
93
      dd socket                  ; 53-Socket interface
159
      dd 0
94
      dd 0
160
      dd 0
95
      dd 0
161
      dd 0
96
      dd 0
162
      dd 0
97
      dd 0
163
      dd file_system             ; 58-Common file system interface
98
      dd file_system             ; 58-Common file system interface
164
      dd 0
99
      dd 0
165
      dd 0
100
      dd 0
166
      dd 0
101
      dd 0
167
      dd sys_pci                 ; 62-PCI functions
102
      dd sys_pci                 ; 62-PCI functions
168
      dd sys_msg_board           ; 63-System message board
103
      dd sys_msg_board           ; 63-System message board
169
 
104
 
170
  ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
105
  ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
171
  ;; NEW SYSTEM FUNCTIONS TABLE ;;
106
  ;; NEW SYSTEM FUNCTIONS TABLE ;;
172
  ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
107
  ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
173
  align 4
108
  align 4
174
  servetable2:
109
  servetable2:
175
 
110
 
176
      dd syscall_draw_window     ; 0-DrawWindow
111
      dd syscall_draw_window     ; 0-DrawWindow
177
      dd syscall_setpixel        ; 1-SetPixel
112
      dd syscall_setpixel        ; 1-SetPixel
178
      dd sys_getkey              ; 2-GetKey
113
      dd sys_getkey              ; 2-GetKey
179
      dd sys_clock               ; 3-GetTime
114
      dd sys_clock               ; 3-GetTime
180
      dd syscall_writetext       ; 4-WriteText
115
      dd syscall_writetext       ; 4-WriteText
181
      dd delay_hs                ; 5-DelayHs
116
      dd delay_hs                ; 5-DelayHs
182
      dd syscall_openramdiskfile ; 6-OpenRamdiskFile
117
      dd syscall_openramdiskfile ; 6-OpenRamdiskFile
183
      dd syscall_putimage        ; 7-PutImage
118
      dd syscall_putimage        ; 7-PutImage
184
      dd syscall_button          ; 8-DefineButton
119
      dd syscall_button          ; 8-DefineButton
185
      dd sys_cpuusage            ; 9-GetProcessInfo
120
      dd sys_cpuusage            ; 9-GetProcessInfo
186
      dd sys_waitforevent        ; 10-WaitForEvent
121
      dd sys_waitforevent        ; 10-WaitForEvent
187
      dd sys_getevent            ; 11-CheckForEvent
122
      dd sys_getevent            ; 11-CheckForEvent
188
      dd sys_redrawstat          ; 12-BeginDraw and EndDraw
123
      dd sys_redrawstat          ; 12-BeginDraw and EndDraw
189
      dd syscall_drawrect        ; 13-DrawRect
124
      dd syscall_drawrect        ; 13-DrawRect
190
      dd syscall_getscreensize   ; 14-GetScreenSize
125
      dd syscall_getscreensize   ; 14-GetScreenSize
191
      dd sys_background          ; 15-bgr
126
      dd sys_background          ; 15-bgr
192
      dd sys_cachetodiskette     ; 16-FlushFloppyCache
127
      dd sys_cachetodiskette     ; 16-FlushFloppyCache
193
      dd sys_getbutton           ; 17-GetButton
128
      dd sys_getbutton           ; 17-GetButton
194
      dd sys_system              ; 18-System Services
129
      dd sys_system              ; 18-System Services
195
      dd paleholder              ; 19-reserved
130
      dd paleholder              ; 19-reserved
196
      dd sys_midi                ; 20-ResetMidi and OutputMidi
131
      dd sys_midi                ; 20-ResetMidi and OutputMidi
197
      dd sys_setup               ; 21-SetMidiBase,SetKeymap,SetShiftKeymap,.
132
      dd sys_setup               ; 21-SetMidiBase,SetKeymap,SetShiftKeymap,.
198
      dd sys_settime 	         ; 22-setting date,time,clock and alarm-clock
133
      dd sys_settime 	         ; 22-setting date,time,clock and alarm-clock
199
      dd sys_wait_event_timeout  ; 23-TimeOutWaitForEvent
134
      dd sys_wait_event_timeout  ; 23-TimeOutWaitForEvent
200
      dd syscall_cdaudio         ; 24-PlayCdTrack,StopCd and GetCdPlaylist
135
      dd syscall_cdaudio         ; 24-PlayCdTrack,StopCd and GetCdPlaylist
201
      dd undefined_syscall       ; 25-reserved
136
      dd undefined_syscall       ; 25-reserved
202
      dd sys_getsetup            ; 26-GetMidiBase,GetKeymap,GetShiftKeymap,.
137
      dd sys_getsetup            ; 26-GetMidiBase,GetKeymap,GetShiftKeymap,.
203
      dd undefined_syscall       ; 27-reserved
138
      dd undefined_syscall       ; 27-reserved
204
      dd undefined_syscall       ; 28-reserved
139
      dd undefined_syscall       ; 28-reserved
205
      dd sys_date                ; 29-GetDate
140
      dd sys_date                ; 29-GetDate
206
      dd sys_current_directory   ; 30-Get/SetCurrentDirectory
141
      dd sys_current_directory   ; 30-Get/SetCurrentDirectory
207
      dd undefined_syscall       ; 31-reserved
142
      dd undefined_syscall       ; 31-reserved
208
      dd undefined_syscall       ; 32-reserved
143
      dd undefined_syscall       ; 32-reserved
209
      dd undefined_syscall       ; 33-reserved
144
      dd undefined_syscall       ; 33-reserved
210
      dd undefined_syscall       ; 34-reserved
145
      dd undefined_syscall       ; 34-reserved
211
      dd syscall_getpixel        ; 35-GetPixel
146
      dd syscall_getpixel        ; 35-GetPixel
212
      dd syscall_getarea         ; 36-GetArea
147
      dd syscall_getarea         ; 36-GetArea
213
      dd readmousepos            ; 37-GetMousePosition_ScreenRelative,.
148
      dd readmousepos            ; 37-GetMousePosition_ScreenRelative,.
214
      dd syscall_drawline        ; 38-DrawLine
149
      dd syscall_drawline        ; 38-DrawLine
215
      dd sys_getbackground       ; 39-GetBackgroundSize,ReadBgrData,.
150
      dd sys_getbackground       ; 39-GetBackgroundSize,ReadBgrData,.
216
      dd set_app_param           ; 40-WantEvents
151
      dd set_app_param           ; 40-WantEvents
217
      dd syscall_getirqowner     ; 41-GetIrqOwner
152
      dd syscall_getirqowner     ; 41-GetIrqOwner
218
      dd get_irq_data            ; 42-ReadIrqData
153
      dd get_irq_data            ; 42-ReadIrqData
219
      dd sys_outport             ; 43-SendDeviceData
154
      dd sys_outport             ; 43-SendDeviceData
220
      dd sys_programirq          ; 44-ProgramIrqs
155
      dd sys_programirq          ; 44-ProgramIrqs
221
      dd reserve_free_irq        ; 45-ReserveIrq and FreeIrq
156
      dd reserve_free_irq        ; 45-ReserveIrq and FreeIrq
222
      dd syscall_reserveportarea ; 46-ReservePortArea and FreePortArea
157
      dd syscall_reserveportarea ; 46-ReservePortArea and FreePortArea
223
      dd display_number          ; 47-WriteNum
158
      dd display_number          ; 47-WriteNum
224
      dd syscall_display_settings ; 48-SetRedrawType and SetButtonType
159
      dd syscall_display_settings ; 48-SetRedrawType and SetButtonType
225
      dd sys_apm		 ; 49-Advanced Power Management (APM)
160
      dd sys_apm		 ; 49-Advanced Power Management (APM)
226
      dd syscall_set_window_shape ; 50-Window shape & scale
161
      dd syscall_set_window_shape ; 50-Window shape & scale
227
      dd syscall_threads         ; 51-Threads
162
      dd syscall_threads         ; 51-Threads
228
      dd stack_driver_stat       ; 52-Stack driver status
163
      dd stack_driver_stat       ; 52-Stack driver status
229
      dd cross_order             ; 53-Socket interface
164
      dd cross_order             ; 53-Socket interface
230
      dd undefined_syscall       ; 54-reserved
165
      dd undefined_syscall       ; 54-reserved
231
      dd sound_interface	 ; 55-Sound interface
166
      dd sound_interface	 ; 55-Sound interface
232
      dd undefined_syscall       ; 56-reserved
167
      dd undefined_syscall       ; 56-reserved
233
      dd sys_pcibios             ; 57-PCI BIOS32
168
      dd sys_pcibios             ; 57-PCI BIOS32
234
      dd cross_order             ; 58-Common file system interface
169
      dd cross_order             ; 58-Common file system interface
235
      dd undefined_syscall       ; 59-reserved
170
      dd undefined_syscall       ; 59-reserved
236
      dd sys_IPC		 ; 60-Inter Process Communication
171
      dd sys_IPC		 ; 60-Inter Process Communication
237
      dd sys_gs			 ; 61-Direct graphics access
172
      dd sys_gs			 ; 61-Direct graphics access
238
      dd cross_order             ; 62-PCI functions
173
      dd cross_order             ; 62-PCI functions
239
      dd cross_order             ; 63-System message board
174
      dd cross_order             ; 63-System message board
240
      dd sys_resize_app_memory   ; 64-Resize application memory usage
175
      dd sys_resize_app_memory   ; 64-Resize application memory usage
241
      dd sys_putimage_palette    ; 65-PutImagePalette
176
      dd sys_putimage_palette    ; 65-PutImagePalette
242
      dd sys_process_def         ; 66-Process definitions - keyboard
177
      dd sys_process_def         ; 66-Process definitions - keyboard
243
      dd syscall_move_window     ; 67-Window move or resize
178
      dd syscall_move_window     ; 67-Window move or resize
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
-
 
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
 
252
endg
195
endg