[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Gcl-devel] [Maxima] Out of range floating point number determinatio
Re: [Gcl-devel] [Maxima] Out of range floating point number determination
Fri, 12 Oct 2012 15:11:17 -0400
Gnus/5.13 (Gnus v5.13) Emacs/23.2 (gnu/linux)
Raymond Toy <address@hidden> writes:
>> 0x08806681: dc 75 e8 fdivl -0x18(%ebp)
>> => 0x08806684: dd 1c 24 fstpl (%esp)
>> which shows as #475 in the $fop register. This value appeared to make
>> sense from the intel docs last I looked.
> I'm pretty sure that code is only for sse2 instructions. I didn't try
> to support x87 instructions.
> The comments in the code indicates the #x5e is for divsd, divss, divpd,
> and divps.
I've got something working for the x87, but as far as I can see, there
is no pertinent sse information passed in ucontext_t to the sighandler
(e.g. like the fpregs for the x87). Furthermore, the chip does not set
the fop or fooff regs at point of sse exception. Yet the sigaction
wipes the xmm registers before proceeding to the handler. All that
appears left in the handler is the fault address, from which one might
decode the faulting instruction. Even the si_code field does not appear
set consistently with the x87 FPU case.
Does this match your understanding? What am I overlooking?
>(compile (defun fr (x y) (declare (long-float x y)) (/ x y)))
>(fr 1.0 0.0)
Fast links are on: do (si::use-fast-links nil) for debugging
Signalled by LET*.
Condition in LET* [or a callee]: INTERNAL-SIMPLE-DIVISION-BY-ZERO: Arithmetic
error when performing (:OP
15238792) on (1.0
Camm Maguire address@hidden
"The earth is but one country, and mankind its citizens." -- Baha'u'llah