Subversion Repositories Kolibri OS

Rev

Rev 129 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 129 Rev 384
Line 12... Line 12...
12
 
12
 
13
      mov   ax,word os_data
13
      mov   ax,word os_data
14
      mov   ds,ax
14
      mov   ds,ax
Line 15... Line -...
15
      mov   es,ax
-
 
16
 
-
 
17
      ; for syscall trace function
-
 
18
      call  save_registers
15
      mov   es,ax
19
 
16
 
20
      ; load all registers in crossed order
17
      ; load all registers in crossed order
21
      mov   edi,[esp+28] ; eax
18
        mov     eax, ebx
22
      mov   eax,[esp+16] ; ebx
19
        mov     ebx, ecx
23
      mov   ebx,[esp+24] ; ecx
20
        mov     ecx, edx
24
      mov   ecx,[esp+20] ; edx
21
        mov     edx, esi
Line 25... Line 22...
25
      mov   edx,[esp+4]  ; esi
22
        mov     esi, edi
26
      mov   esi,[esp+0]  ; edi
23
        mov     edi, [esp+28]
27
 
24
 
28
      ; enable interupts  -  a task switch or an IRQ _CAN_ interrupt i40 handler
25
      ; enable interupts  -  a task switch or an IRQ _CAN_ interrupt i40 handler
29
      sti
26
      sti
30
      push  eax
27
      push  eax
31
      and   edi,0xff
28
      and   edi,0xff
Line 32... Line 29...
32
      call  dword [servetable+edi*4]
29
      call  dword [servetable+edi*4]
33
      pop   eax
30
      pop   eax
34
      cli
31
;      cli
Line 35... Line 32...
35
      
32
 
36
      popad
-
 
37
      pop   es ds
33
      popad
38
      iretd
34
      pop   es ds
39
 
-
 
40
align 4
35
      iretd
41
save_registers:
36
 
42
      mov   esi, [0x3010]
-
 
43
      mov   eax, [esi+TASKDATA.pid] ; load PID
-
 
44
      lea   esi, [esp+4]
37
 
45
      inc   [save_syscall_count]
-
 
46
      mov   edi,[save_syscall_count]
-
 
47
      and   edi,0xF
-
 
48
      shl   edi,6
-
 
49
      add   edi,save_syscall_data+32
-
 
Line 50... Line 38...
50
      mov   [edi-32],eax
38
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
51
      mov   ecx,32 / 4
39
;;                                                            ;;
-
 
40
;;                     SYSENTER ENTRY                         ;;
52
      cld
41
;;                                                            ;;
Line -... Line 42...
-
 
42
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-
 
43
 
-
 
44
uglobal
-
 
45
times	100 db ?
-
 
46
sysenter_stack:
-
 
47
endg
-
 
48
 
-
 
49
align 32
-
 
50
SYSENTER_VAR	equ	0
-
 
51
sysenter_entry:
-
 
52
	; Íàñòðàèâàåì ñòåê
-
 
53
	cli
-
 
54
	push	eax
-
 
55
	mov	eax, [ss:CURRENT_TASK]
-
 
56
	shl	eax, 8
-
 
57
        mov     eax, [ss:SLOT_BASE + eax + APPDATA.pl0_stack]
-
 
58
	lea	esp, [ss:eax + RING0_STACK_SIZE]	; configure ESP
-
 
59
	mov	eax, [ss:sysenter_stack - 4]		; eax - original eax, from app
-
 
60
	sti
-
 
61
	;------------------
-
 
62
	push	ds es
-
 
63
	pushad
-
 
64
	cld
-
 
65
 
-
 
66
	mov	ax, word os_data
-
 
67
	mov	ds, ax
-
 
68
	mov	es, ax
-
 
69
 
-
 
70
        mov     eax, ebx
-
 
71
        mov     ebx, ecx
-
 
72
        mov     ecx, edx
-
 
73
        mov     edx, esi
-
 
74
        mov     esi, edi
-
 
75
        mov     edi, [esp + 28]
-
 
76
 
-
 
77
	push	eax
-
 
78
	and	edi, 0xff
-
 
79
	call	dword [servetable + edi * 4]
-
 
80
	pop	eax
-
 
81
 
-
 
82
	popad
-
 
83
	pop	es ds
-
 
84
	;------------------
-
 
85
	mov	edx, [SYSENTER_VAR]		; eip
-
 
86
	mov	ecx, [SYSENTER_VAR + 4]	; esp
-
 
87
	sysexit
-
 
88
 
-
 
89
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-
 
90
;;                                                            ;;
-
 
91
;;                     SYSCALL ENTRY                          ;;
53
      rep   movsd
92
;;                                                            ;;
-
 
93
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-
 
94
align 32
-
 
95
syscall_entry:
-
 
96
	cli
-
 
97
	xchg	ecx, [esp]
-
 
98
	mov	[SYSENTER_VAR + 4], esp
-
 
99
	mov	[ss:sysenter_stack - 4], eax
-
 
100
	mov	eax, [ss:CURRENT_TASK]
-
 
101
	shl	eax, 8
-
 
102
        mov     eax, [ss:SLOT_BASE + eax + APPDATA.pl0_stack]
-
 
103
	lea	esp, [ss:eax + RING0_STACK_SIZE]	; configure ESP
-
 
104
	mov	eax, [ss:sysenter_stack - 4]		; eax - original eax, from app
-
 
105
	sti
-
 
106
	;------------------
-
 
107
	push	ds es
-
 
108
	pushad
-
 
109
	cld
-
 
110
 
-
 
111
	mov	ax, word os_data
-
 
112
	mov	ds, ax
-
 
113
	mov	es, ax
Line -... Line 114...
-
 
114
 
-
 
115
        mov     eax, ebx
-
 
116
        mov     ebx, ecx
-
 
117
        mov     ecx, edx
Line -... Line 118...
-
 
118
        mov     edx, esi
-
 
119
        mov     esi, edi
-
 
120
        mov     edi, [esp + 28]
-
 
121
 
-
 
122
	push	eax
-
 
123
	and	edi, 0xff
54
      ret
124
	call	dword [servetable + edi * 4]
55
 
125
	pop	eax
56
uglobal
126
 
57
  save_syscall_count  dd 0x0
127
	popad
Line 85... Line 155...
85
      dd syscall_getscreensize   ; 14-GetScreenSize
155
      dd syscall_getscreensize   ; 14-GetScreenSize
86
      dd sys_background          ; 15-bgr
156
      dd sys_background          ; 15-bgr
87
      dd sys_cachetodiskette     ; 16-FlushFloppyCache
157
      dd sys_cachetodiskette     ; 16-FlushFloppyCache
88
      dd sys_getbutton           ; 17-GetButton
158
      dd sys_getbutton           ; 17-GetButton
89
      dd sys_system              ; 18-System Services
159
      dd sys_system              ; 18-System Services
90
      dd syscall_startapp        ; 19-StartApp
160
      dd paleholder;undefined_syscall       ; 19-reserved
91
      dd sys_midi                ; 20-ResetMidi and OutputMidi
161
      dd sys_midi                ; 20-ResetMidi and OutputMidi
92
      dd sys_setup               ; 21-SetMidiBase,SetKeymap,SetShiftKeymap,.
162
      dd sys_setup               ; 21-SetMidiBase,SetKeymap,SetShiftKeymap,.
93
      dd sys_settime             ; 22-setting date,time,clock and alarm-clock
163
      dd sys_settime             ; 22-setting date,time,clock and alarm-clock
94
      dd sys_wait_event_timeout  ; 23-TimeOutWaitForEvent
164
      dd sys_wait_event_timeout  ; 23-TimeOutWaitForEvent
95
      dd syscall_cdaudio         ; 24-PlayCdTrack,StopCd and GetCdPlaylist
165
      dd syscall_cdaudio         ; 24-PlayCdTrack,StopCd and GetCdPlaylist
96
      dd sys_sb16                ; 25-SetSb16
166
      dd sys_sb16                ; 25-SetSb16
97
      dd sys_getsetup            ; 26-GetMidiBase,GetKeymap,GetShiftKeymap,.
167
      dd sys_getsetup            ; 26-GetMidiBase,GetKeymap,GetShiftKeymap,.
98
      dd sys_wss                 ; 27-SetWssMainVol and SetWssCdVol
168
      dd undefined_syscall       ; 27-reserved
99
      dd sys_sb16II              ; 28-SetSb16
169
      dd sys_sb16II              ; 28-SetSb16
100
      dd sys_date                ; 29-GetDate
170
      dd sys_date                ; 29-GetDate
101
;      dd syscall_readhd          ; 30-ReadHd - obsolete 
-
 
102
      dd undefined_syscall       ; 30-reserved
171
      dd undefined_syscall       ; 30-reserved
103
;      dd syscall_starthdapp      ; 31-StartHdApp - obsolete 
-
 
104
      dd undefined_syscall       ; 31-reserved
172
      dd undefined_syscall       ; 31-reserved
105
      dd syscall_delramdiskfile  ; 32-DelRamdiskFile
173
      dd syscall_delramdiskfile  ; 32-DelRamdiskFile
106
      dd syscall_writeramdiskfile; 33-WriteRamdiskFile
174
      dd syscall_writeramdiskfile; 33-WriteRamdiskFile
107
;      dd read_floppy_file        ; 34-ReadFloppyDrive - obsolete 
-
 
108
      dd undefined_syscall       ; 34-reserved
175
      dd undefined_syscall       ; 34-reserved
109
      dd syscall_getpixel        ; 35-GetPixel
176
      dd syscall_getpixel        ; 35-GetPixel
110
      dd syscall_readstring      ; 36-ReadString (not yet ready)
177
      dd syscall_readstring      ; 36-ReadString (not yet ready)
111
      dd readmousepos            ; 37-GetMousePosition_ScreenRelative,.
178
      dd readmousepos            ; 37-GetMousePosition_ScreenRelative,.
112
      dd syscall_drawline        ; 38-DrawLine
179
      dd syscall_drawline        ; 38-DrawLine
Line 125... Line 192...
125
      dd syscall_threads         ; 51-Threads
192
      dd syscall_threads         ; 51-Threads
126
      dd stack_driver_stat       ; 52-Stack driver status
193
      dd stack_driver_stat       ; 52-Stack driver status
127
      dd socket                  ; 53-Socket interface
194
      dd socket                  ; 53-Socket interface
128
      dd user_events             ; 54-User events
195
      dd user_events             ; 54-User events
129
      dd sound_interface         ; 55-Sound interface
196
      dd sound_interface         ; 55-Sound interface
130
      dd write_to_hd             ; 56-Write a file to hd
197
      dd undefined_syscall       ; 56-reserved
131
;      dd delete_from_hd          ; 57-Delete a file from hd - obsolete 
-
 
132
      dd undefined_syscall       ; 57-reserved
198
      dd undefined_syscall       ; 57-reserved
133
      dd file_system             ; 58-Common file system interface
199
      dd file_system             ; 58-Common file system interface
134
      dd sys_trace               ; 59-System call trace
200
      dd undefined_syscall       ; 59-reserved
135
      dd new_sys_ipc             ; 60-Inter Process Communication
201
      dd sys_IPC                 ; 60-Inter Process Communication
136
      dd sys_gs                  ; 61-Direct graphics access
202
      dd sys_gs                  ; 61-Direct graphics access
137
      dd sys_pci                 ; 62-PCI functions
203
      dd sys_pci                 ; 62-PCI functions
138
      dd sys_msg_board           ; 63-System message board
204
      dd sys_msg_board           ; 63-System message board
139
      dd sys_resize_app_memory   ; 64-Resize application memory usage
205
      dd sys_resize_app_memory   ; 64-Resize application memory usage
140
      dd undefined_syscall       ; 65-UTF
206
      dd syscall_putimage_palette; 65-PutImagePalette
141
      dd sys_process_def         ; 66-Process definitions - keyboard
207
      dd sys_process_def         ; 66-Process definitions - keyboard
142
      dd sys_window_move         ; 67-Window move or resize
208
      dd sys_window_move         ; 67-Window move or resize
143
      dd sys_internal_services   ; 68-Some internal services
209
      dd new_services            ; 68-Some internal services
144
      dd sys_debug_services      ; 69-Debug
210
      dd sys_debug_services      ; 69-Debug
145
      dd file_system_lfn         ; 70-Common file system interface, version 2
211
      dd file_system_lfn         ; 70-Common file system interface, version 2
146
      dd syscall_windowsettings  ; 71-Window settings
212
      dd syscall_windowsettings  ; 71-Window settings
Line 147... Line 213...
147
 
213