Subversion Repositories Kolibri OS

Compare Revisions

Regard whitespace Rev 1074 → Rev 1075

/programs/develop/open watcom/trunk/clib/fpu/fpe387.asm
42,6 → 42,7
datasegment
Save87 dd 0
OldMask dd 0
enddata
 
56,13 → 57,17
push EAX ; save registers
push EBX ; ...
push ECX ; ...
push EDX ; ...
mov EAX, 68
mov EBX, 15
mov EDX, 10000h ; 1 shl 16 - #MF
lea ECX, __FPE2Handler_
int 40h ; set new #FPE handler
int 40h ; set new exception handler
mov Save87, EAX ; save old handler
mov OldMask,EBX ; save old mask
pop EDX ; ...
pop ECX ; ...
pop EBX ; ...
pop EAX ; ...
78,6 → 83,7
_endif ; endif
push EAX ; save registers
push EBX ; ...
; ECX ????
push EDX ; ...
sub ESP,4 ; allocate space for control word
fstcw word ptr [ESP] ; get control word
89,10 → 95,12
mov EAX, 68
mov EBX, 15
mov ECX, dword ptr Save87
int 40h ; set new #FPE handler
mov ECX, dword ptr Save87 ; restore handler
mov EDX, dword ptr OldMask ; restore mask
int 40h ; set new ecxeption handler
pop EDX ; ...
; ECX ????
pop EBX ; ...
pop EAX ; ...
ret
/programs/develop/open watcom/trunk/clib/fpu/fpeinth.asm
71,6 → 71,9
push EBP ; ...
sub ESP,ENV_SIZE ; make room for environment information
mov EBP,ESP ; point to buffer for 80x87 environment
; Now EXC_NUM is located in [EBP+ENV_SIZE+32]
; but it isn't necessary to testing EXC_NUM,
; because only #MF is unmasked now
fnstenv [EBP] ; get 80x87 environment
fwait ; wait for 80x87
mov EDX,ENV_CW[EBP] ; get control word
124,6 → 127,15
call GetInf ; - process divide by zero
mov CL,FPE_ZERODIVIDE ; - indicate divide by zero
_endguess ; endguess
; More correctly to rise this mask bit - is on end of __FPE_exception_
; but it may not returned at all...
push ECX
mov EAX, 68
mov EBX, 18 ;
mov ECX, 16 ; #MF
mov EDX, 1 ; rise activity
int 40h ; change state of signal activity
pop ECX
_guess ; guess exception to be handled
cmp CL,FPE_OK ; - check if exception allowed
_quif e ; - quit if exception not allowed
144,7 → 156,8
pop ECX ; ...
pop EBX ; ...
pop EAX ; ...
ret ; return from interrupt handler
ret 4 ; return from interrupt handler
; with removing EXC_NUM
 
endproc __FPEHandler_