Subversion Repositories Kolibri OS

Rev

Rev 1626 | Rev 1664 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

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