Subversion Repositories Kolibri OS

Rev

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

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