Subversion Repositories Kolibri OS

Rev

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

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