Patch by Jose Catena:
allmul produced wrong results when the higher 32 bits of any of the 64 bit operands are not zero. As the comment correctly said the definition of param locations must change
since esp was altered, but the definitions were not actually changed

See issue #5121 for more details.

svn path=/trunk/; revision=45088
This commit is contained in:
Timo Kreuzer 2010-01-15 20:45:36 +00:00
parent fc70f9c60c
commit 59e66ba7e8

View file

@ -93,10 +93,10 @@ hard:
// must redefine A and B since esp has been altered
#define A2LO [esp + 4] // stack address of a
#define A2HI [esp + 8] // stack address of a
#define B2LO [esp + 12] // stack address of b
#define B2HI [esp + 16] // stack address of b
#define A2LO [esp + 8] // stack address of a
#define A2HI [esp + 12] // stack address of a
#define B2LO [esp + 16] // stack address of b
#define B2HI [esp + 20] // stack address of b
mul ecx //eax has AHI, ecx has BLO, so AHI * BLO
mov ebx,eax //save result