changing by forum post 23500:

1) f68:15,18 moved to f68:24,25
2) f68:15,18 set to obsolete

git-svn-id: svn://kolibrios.org@1077 a494cfbc-eb01-0410-851d-a64ba20cac60
This commit is contained in:
Galkov 2009-05-23 08:23:03 +00:00
parent 2df36c4abf
commit b092aa34a2
5 changed files with 112 additions and 86 deletions

View File

@ -991,15 +991,17 @@ f68call:
dd f68.12 dd f68.12
dd f68.13 dd f68.13
dd f68.14 dd f68.14
dd f68.15 dd f68.fail ;moved to f68.24
dd f68.16 dd f68.16
dd f68.17 dd f68.17
dd f68.18 dd f68.fail ;moved to f68.25
dd f68.19 dd f68.19
dd f68.20 dd f68.20
dd f68.21 dd f68.21
dd f68.22 dd f68.22
dd f68.23 dd f68.23
dd f68.24
dd f68.25
align 4 align 4
f68: f68:
@ -1009,7 +1011,7 @@ f68:
cmp eax, 11 cmp eax, 11
jb .fail jb .fail
cmp eax, 23 cmp eax, 25
ja .fail ja .fail
jmp dword [f68call+eax*4-11*4] jmp dword [f68call+eax*4-11*4]
@ -1032,7 +1034,7 @@ f68:
call get_event_ex call get_event_ex
mov [esp+36], eax mov [esp+36], eax
ret ret
.15: .24:
mov eax, [current_slot] mov eax, [current_slot]
xchg ebx, [eax+APPDATA.exc_handler] xchg ebx, [eax+APPDATA.exc_handler]
xchg ecx, [eax+APPDATA.except_mask] xchg ecx, [eax+APPDATA.except_mask]
@ -1051,7 +1053,7 @@ f68:
call srv_handlerEx ;ebx call srv_handlerEx ;ebx
mov [esp+36], eax mov [esp+36], eax
ret ret
.18: .25:
mov eax, [current_slot] mov eax, [current_slot]
btr [eax+APPDATA.except_mask],ebx btr [eax+APPDATA.except_mask],ebx
setc byte[esp+36] setc byte[esp+36]

View File

@ -3655,35 +3655,10 @@ Architecture Software Developer's Manual, Volume 3, Appendix B);
®¯à¥¤¥«ï¥âáï ¯¥à¢ë¬ dword-®¬ ®¯à¥¤¥«ï¥âáï ¯¥à¢ë¬ dword-®¬
====================================================================== ======================================================================
==== ”ã­ªæ¨ï 68, ¯®¤äã­ªæ¨ï 15 - ãáâ ­®¢¨âì ®¡à ¡®â稪 ¨áª«î祭¨© === == ”ã­ªæ¨ï 68, ¯®¤äã­ªæ¨ï 15 - ãáâ ­®¢¨âì ®¡à ¡®â稪 ¨áª«î祭¨© FPU. =
====================================================================== ======================================================================
<EFBFBD> à ¬¥âàë: “¤ «¥­  (¢ ⥪ã饩 ॠ«¨§ æ¨¨ ¯®áâ® ¢®§¢à é ¥â 0)
* eax = 68 - ­®¬¥à ä㭪樨 ˆá¯®«ì§®¢ âì ¯®¤ä㭪樨 24, 25
* ebx = 15 - ­®¬¥à ¯®¤ä㭪樨
* ecx =  ¤à¥á ­®¢®£® ®¡à ¡®â稪  ¨áª«î祭¨©
* edx = ¬ áª  ®¡à ¡ â뢠¥¬ëå ¨áª«î祭¨©
‚®§¢à é ¥¬®¥ §­ ç¥­¨¥:
* eax =  ¤à¥á áâ à®£® ®¡à ¡®â稪  ¨áª«î祭¨©
(0, ¥á«¨ ®­ ­¥ ¡ë« ãáâ ­®¢«¥­)
* ebx = ¬ áª  áâ à®£® ®¡à ¡®â稪  ¨áª«î祭¨©
‡ ¬¥ç ­¨ï:
* <20>®¬¥à ¡¨â  ¢ ¬ áª¥ ¨áª«î祭¨© ᮮ⢥âáâ¢ãîâ ­®¬¥à㠨᪫î祭¨ï ¯®
ᯥæ¨ä¨ª æ¨¨ ­  ¯à®æ¥áá®à (Intel-PC). ’ ª ­ ¯à¨¬¥à, ¨áª«î祭¨ï FPU
¨¬¥îâ ­®¬¥à 16 (#MF),   SSE - 19 (#XF).
* ¤ ­­®© ॠ«¨§ æ¨¨ ¨£­®à¨àã¥âáï § ¯à®á ­  ¯¥à¥å¢ â ¨áª«î祭¨ï 7
- á¨á⥬  ®¡à ¡ â뢠¥â #NM á ¬®áâ®ï⥫쭮.
* <20>®«ì§®¢ â¥«ì᪨© ®¡à ¡®â稪 ¯®«ã砥⠭®¬¥à ¨áª«î祭¨ï ¯ à ¬¥â஬
¢ á⥪¥. <20>®í⮬㠯ࠢ¨«ì­ë© ¢ë室 ¨§ ®¡à ¡®â稪 : RET 4. ‚®§¢à â
¯à¨ í⮬ ¯à®¨§¢®¤¨âáï ­  ª®¬ ­¤ã, ¢ë§¢ ¢èãî ¨áª«î祭¨¥.
* <20>ਠ¯¥à¥¤ ç¥ ã¯à ¢«¥­¨ï ®¡à ¡®â稪㠨᪫î祭¨©, á¡à á뢠¥âáï
ᮮ⢥âáâ¢ãî騩 ¡¨â ¢ ¬ áª¥ ¨áª«î祭¨©. ‚®§­¨ª­®¢¥­¨¥ í⮣® ¦¥
¨áª«î祭¨ï ¢ ¯®á«¥¤á⢨¨ - ¯à¨¢¥¤¥â ª default-®¡à ¡®âª¥ â ª®¢®£®.
€ ¨¬¥­­®: ª § ¢¥à襭¨î à ¡®âë ¯à¨«®¦¥­¨ï, ¨«¨ ¯à¨®áâ ­®¢ª¥ á
­®â¨ä¨ª æ¨¥© ®â« ¦¨¢ î饬㠯ਫ®¦¥­¨î.
* <20>®á«¥ § ¢¥à襭¨ï ªà¨â¨ç¥áª¨å ¤¥©á⢨© ¢ ®¡à ¡®â稪¥ ¯®«ì§®¢ â¥«ï,
¢®ááâ ­®¢«¥­¨¥ ¡¨â  ¬ áª¨ ¤ ­­®£® ¨áª«î祭¨ï ¬®¦­® ᤥ« âì
¯®¤ä㭪樥© 18. ‘¡à®á ä« £®¢ ¨áª«î祭¨© ¢ ¬®¤ã«ïå FPU ¨ XMM -
â ª¦¥ ¢®§« £ ¥âáï ­  ®¡à ¡®â稪 ¯®«ì§®¢ â¥«ï.
====================================================================== ======================================================================
=========== ”ã­ªæ¨ï 68, ¯®¤äã­ªæ¨ï 16 - § £à㧨âì ¤à ©¢¥à. =========== =========== ”ã­ªæ¨ï 68, ¯®¤äã­ªæ¨ï 16 - § £à㧨âì ¤à ©¢¥à. ===========
@ -3724,19 +3699,10 @@ Architecture Software Developer's Manual, Volume 3, Appendix B);
* <20>।¢ à¨â¥«ì­® ¤®«¦¥­ ¡ëâì ¯®«ã祭 åí­¤« ¤à ©¢¥à  ¯®¤ä㭪樥© 16. * <20>।¢ à¨â¥«ì­® ¤®«¦¥­ ¡ëâì ¯®«ã祭 åí­¤« ¤à ©¢¥à  ¯®¤ä㭪樥© 16.
====================================================================== ======================================================================
= ”ã­ªæ¨ï 68, ¯®¤äã­ªæ¨ï 18 - ¨§¬¥­¥­¨¥ á®áâ®ï­¨ï  ªâ¨¢­®á⨠ᨣ­ «  = == ”ã­ªæ¨ï 68, ¯®¤äã­ªæ¨ï 18 - ãáâ ­®¢¨âì ®¡à ¡®â稪 ¨áª«î祭¨© SSE. =
====================================================================== ======================================================================
<EFBFBD> à ¬¥âàë: “¤ «¥­  (¢ ⥪ã饩 ॠ«¨§ æ¨¨ ¯®áâ® ¢®§¢à é ¥â 0)
* eax = 68 - ­®¬¥à ä㭪樨 ˆá¯®«ì§®¢ âì ¯®¤ä㭪樨 24, 25
* ebx = 18 - ­®¬¥à ¯®¤ä㭪樨
* ecx = ­®¬¥à ᨣ­ « 
* edx = §­ ç¥­¨¥ ãáâ ­ ¢«¨¢ ¥¬®©  ªâ¨¢­®á⨠(0/1)
‚®§¢à é ¥¬®¥ §­ ç¥­¨¥:
* eax = áâ à®¥ §­ ç¥­¨¥  ªâ¨¢­®á⨠ᨣ­ «  (0/1)
‡ ¬¥ç ­¨ï:
* ⥪ã饩 ॠ«¨§ æ¨¨ ¨§¬¥­ï¥âáï ⮫쪮 ¬ áª  ¯®«ì§®¢ â¥«ì᪮£®
®¡à ¡®â稪  ¨áª«î祭¨©, ãáâ ­®¢«¥­­®£® ¯®¤ä㭪樥© 15. <20>ਠí⮬
­®¬¥à ᨣ­ «  ᮮ⢥âáâ¢ã¥â ­®¬¥à㠨᪫î祭¨ï.
====================================================================== ======================================================================
============= ”ã­ªæ¨ï 68, ¯®¤äã­ªæ¨ï 19 - § £à㧨âì DLL. ============= ============= ”ã­ªæ¨ï 68, ¯®¤äã­ªæ¨ï 19 - § £à㧨âì DLL. =============
@ -3830,6 +3796,52 @@ Architecture Software Developer's Manual, Volume 3, Appendix B);
* <20>ਠ§ ¢¥à襭¨¨ ¯®â®ª  ®á¢®¡®¦¤ îâáï ¢á¥ ®âªàëâë¥ ¨¬ * <20>ਠ§ ¢¥à襭¨¨ ¯®â®ª  ®á¢®¡®¦¤ îâáï ¢á¥ ®âªàëâë¥ ¨¬
®¡« á⨠¯ ¬ïâ¨. ®¡« á⨠¯ ¬ïâ¨.
======================================================================
==== ”ã­ªæ¨ï 68, ¯®¤äã­ªæ¨ï 24 - ãáâ ­®¢¨âì ®¡à ¡®â稪 ¨áª«î祭¨© ===
======================================================================
<EFBFBD> à ¬¥âàë:
* eax = 68 - ­®¬¥à ä㭪樨
* ebx = 24 - ­®¬¥à ¯®¤ä㭪樨
* ecx =  ¤à¥á ­®¢®£® ®¡à ¡®â稪  ¨áª«î祭¨©
* edx = ¬ áª  ®¡à ¡ â뢠¥¬ëå ¨áª«î祭¨©
‚®§¢à é ¥¬®¥ §­ ç¥­¨¥:
* eax =  ¤à¥á áâ à®£® ®¡à ¡®â稪  ¨áª«î祭¨©
(0, ¥á«¨ ®­ ­¥ ¡ë« ãáâ ­®¢«¥­)
* ebx = ¬ áª  áâ à®£® ®¡à ¡®â稪  ¨áª«î祭¨©
‡ ¬¥ç ­¨ï:
* <20>®¬¥à ¡¨â  ¢ ¬ áª¥ ¨áª«î祭¨© ᮮ⢥âáâ¢ãîâ ­®¬¥à㠨᪫î祭¨ï ¯®
ᯥæ¨ä¨ª æ¨¨ ­  ¯à®æ¥áá®à (Intel-PC). ’ ª ­ ¯à¨¬¥à, ¨áª«î祭¨ï FPU
¨¬¥îâ ­®¬¥à 16 (#MF),   SSE - 19 (#XF).
* ¤ ­­®© ॠ«¨§ æ¨¨ ¨£­®à¨àã¥âáï § ¯à®á ­  ¯¥à¥å¢ â ¨áª«î祭¨ï 7
- á¨á⥬  ®¡à ¡ â뢠¥â #NM á ¬®áâ®ï⥫쭮.
* <20>®«ì§®¢ â¥«ì᪨© ®¡à ¡®â稪 ¯®«ã砥⠭®¬¥à ¨áª«î祭¨ï ¯ à ¬¥â஬
¢ á⥪¥. <20>®í⮬㠯ࠢ¨«ì­ë© ¢ë室 ¨§ ®¡à ¡®â稪 : RET 4. ‚®§¢à â
¯à¨ í⮬ ¯à®¨§¢®¤¨âáï ­  ª®¬ ­¤ã, ¢ë§¢ ¢èãî ¨áª«î祭¨¥.
* <20>ਠ¯¥à¥¤ ç¥ ã¯à ¢«¥­¨ï ®¡à ¡®â稪㠨᪫î祭¨©, á¡à á뢠¥âáï
ᮮ⢥âáâ¢ãî騩 ¡¨â ¢ ¬ áª¥ ¨áª«î祭¨©. ‚®§­¨ª­®¢¥­¨¥ í⮣® ¦¥
¨áª«î祭¨ï ¢ ¯®á«¥¤á⢨¨ - ¯à¨¢¥¤¥â ª default-®¡à ¡®âª¥ â ª®¢®£®.
€ ¨¬¥­­®: ª § ¢¥à襭¨î à ¡®âë ¯à¨«®¦¥­¨ï, ¨«¨ ¯à¨®áâ ­®¢ª¥ á
­®â¨ä¨ª æ¨¥© ®â« ¦¨¢ î饬㠯ਫ®¦¥­¨î.
* <20>®á«¥ § ¢¥à襭¨ï ªà¨â¨ç¥áª¨å ¤¥©á⢨© ¢ ®¡à ¡®â稪¥ ¯®«ì§®¢ â¥«ï,
¢®ááâ ­®¢«¥­¨¥ ¡¨â  ¬ áª¨ ¤ ­­®£® ¨áª«î祭¨ï ¬®¦­® ᤥ« âì
¯®¤ä㭪樥© 18. ‘¡à®á ä« £®¢ ¨áª«î祭¨© ¢ ¬®¤ã«ïå FPU ¨ XMM -
â ª¦¥ ¢®§« £ ¥âáï ­  ®¡à ¡®â稪 ¯®«ì§®¢ â¥«ï.
======================================================================
= ”ã­ªæ¨ï 68, ¯®¤äã­ªæ¨ï 25 - ¨§¬¥­¥­¨¥ á®áâ®ï­¨ï  ªâ¨¢­®á⨠ᨣ­ «  =
======================================================================
<EFBFBD> à ¬¥âàë:
* eax = 68 - ­®¬¥à ä㭪樨
* ebx = 25 - ­®¬¥à ¯®¤ä㭪樨
* ecx = ­®¬¥à ᨣ­ « 
* edx = §­ ç¥­¨¥ ãáâ ­ ¢«¨¢ ¥¬®©  ªâ¨¢­®á⨠(0/1)
‚®§¢à é ¥¬®¥ §­ ç¥­¨¥:
* eax = áâ à®¥ §­ ç¥­¨¥  ªâ¨¢­®á⨠ᨣ­ «  (0/1)
‡ ¬¥ç ­¨ï:
* ⥪ã饩 ॠ«¨§ æ¨¨ ¨§¬¥­ï¥âáï ⮫쪮 ¬ áª  ¯®«ì§®¢ â¥«ì᪮£®
®¡à ¡®â稪  ¨áª«î祭¨©, ãáâ ­®¢«¥­­®£® ¯®¤ä㭪樥© 15. <20>ਠí⮬
­®¬¥à ᨣ­ «  ᮮ⢥âáâ¢ã¥â ­®¬¥à㠨᪫î祭¨ï.
====================================================================== ======================================================================
======================== ”ã­ªæ¨ï 69 - ®â« ¤ª . ======================= ======================== ”ã­ªæ¨ï 69 - ®â« ¤ª . =======================
====================================================================== ======================================================================

View File

@ -3627,33 +3627,10 @@ Returned value:
first dword first dword
====================================================================== ======================================================================
====== Function 68, subfunction 15 - set new exceptions handler ====== ====== Function 68, subfunction 15 - set FPU exception handler. ======
====================================================================== ======================================================================
Parameters: Deleted (in current implementation only 0 is returned).
* eax = 68 - function number Using subfunctions 24, 25 is true.
* ebx = 15 - subfunction number
* ecx = address of the new exception handler
* edx = the mask of processing exceptions
Returned value:
* eax = address of the old exception handler (0, if it was not set)
* ebx = the old mask of exception handler
Remarks:
* Bit number in mask of exceptions is correspond to exception number
by CPU-specification (Intel-PC). For example, FPU-exception have
number 16 (#MF), and SSE-exception - 19 (#XF)
* The current implementation ignore the inquiry for hook of 7
exception - system process #NM by one's own.
* User handler get exception number in stack parameter. So, correct
exit from handler is: RET 4. Return from handler is to the same
instruction, that was cause the exception
* When control is transfering to user handler, corresponding bit in
exception mask is clearing. Rising this exception in consequence
- reduce to default-handling. Exactly: terminating the application,
or suspending with debug-notify to owner.
* After completion of critical operations in user handler, it may be
rising corresponding bit in exception mask by using subfunction 18
Clearing exceptions flags in FPU and/or XMM modules - is
responsibility of user handler too.
====================================================================== ======================================================================
============= Function 68, subfunction 16 - load driver. ============= ============= Function 68, subfunction 16 - load driver. =============
@ -3694,19 +3671,10 @@ Remarks:
* Previously one must obtain driver handle by subfunction 16. * Previously one must obtain driver handle by subfunction 16.
====================================================================== ======================================================================
==== Function 68, subfunction 18 - change state of signal activity === ====== Function 68, subfunction 18 - set SSE exception handler. ======
====================================================================== ======================================================================
Parameters: Deleted (in current implementation only 0 is returned).
* eax = 68 - function number Using subfunctions 24, 25 is true.
* ebx = 15 - subfunction number
* ecx = signal number
* edx = value of activity (0/1)
Returned value:
* eax = value of old activity for this signal (0/1)
Remarks:
* In current implementation, it is changed only exception mask for
user exception handler, wich was previously set by subfunction 15.
At that, number of signal correspond to exception number.
====================================================================== ======================================================================
=============== Function 68, subfunction 19 - load DLL. ============== =============== Function 68, subfunction 19 - load DLL. ==============
@ -3746,6 +3714,50 @@ Remarks:
* The contents of the block are unchanged up to the shorter of * The contents of the block are unchanged up to the shorter of
the new and old sizes. the new and old sizes.
======================================================================
====== Function 68, subfunction 24 - set new exceptions handler ======
======================================================================
Parameters:
* eax = 68 - function number
* ebx = 24 - subfunction number
* ecx = address of the new exception handler
* edx = the mask of processing exceptions
Returned value:
* eax = address of the old exception handler (0, if it was not set)
* ebx = the old mask of exception handler
Remarks:
* Bit number in mask of exceptions is correspond to exception number
by CPU-specification (Intel-PC). For example, FPU-exception have
number 16 (#MF), and SSE-exception - 19 (#XF)
* The current implementation ignore the inquiry for hook of 7
exception - system process #NM by one's own.
* User handler get exception number in stack parameter. So, correct
exit from handler is: RET 4. Return from handler is to the same
instruction, that was cause the exception
* When control is transfering to user handler, corresponding bit in
exception mask is clearing. Rising this exception in consequence
- reduce to default-handling. Exactly: terminating the application,
or suspending with debug-notify to owner.
* After completion of critical operations in user handler, it may be
rising corresponding bit in exception mask by using subfunction 18
Clearing exceptions flags in FPU and/or XMM modules - is
responsibility of user handler too.
======================================================================
==== Function 68, subfunction 25 - change state of signal activity ===
======================================================================
Parameters:
* eax = 68 - function number
* ebx = 25 - subfunction number
* ecx = signal number
* edx = value of activity (0/1)
Returned value:
* eax = value of old activity for this signal (0/1)
Remarks:
* In current implementation, it is changed only exception mask for
user exception handler, wich was previously set by subfunction 15.
At that, number of signal correspond to exception number.
====================================================================== ======================================================================
====================== Fucntion 69 - debugging. ====================== ====================== Fucntion 69 - debugging. ======================
====================================================================== ======================================================================

View File

@ -60,7 +60,7 @@ defp __Init_FPE_handler
push EDX ; ... push EDX ; ...
mov EAX, 68 mov EAX, 68
mov EBX, 15 mov EBX, 24
mov EDX, 10000h ; 1 shl 16 - #MF mov EDX, 10000h ; 1 shl 16 - #MF
lea ECX, __FPE2Handler_ lea ECX, __FPE2Handler_
int 40h ; set new exception handler int 40h ; set new exception handler
@ -94,7 +94,7 @@ defp __Fini_FPE_handler
add ESP,4 ; remove temporary add ESP,4 ; remove temporary
mov EAX, 68 mov EAX, 68
mov EBX, 15 mov EBX, 24
mov ECX, dword ptr Save87 ; restore handler mov ECX, dword ptr Save87 ; restore handler
mov EDX, dword ptr OldMask ; restore mask mov EDX, dword ptr OldMask ; restore mask
int 40h ; set new ecxeption handler int 40h ; set new ecxeption handler

View File

@ -131,7 +131,7 @@ opcode:
; but it may not returned at all... ; but it may not returned at all...
push ECX push ECX
mov EAX, 68 mov EAX, 68
mov EBX, 18 ; mov EBX, 25 ;
mov ECX, 16 ; #MF mov ECX, 16 ; #MF
mov EDX, 1 ; rise activity mov EDX, 1 ; rise activity
int 40h ; change state of signal activity int 40h ; change state of signal activity