Hi there,
I got a question about register constraint in kernel source.
Here is the cut of bios32_service()
597 __asm__("lcall (%%edi); cld"
598 : "=a" (return_code),
599 "=b" (address),
600 "=c" (length),
601 "=d" (entry)
602 : "" (service),
603 "1" (0),
604 "D" (&bios32_indirect));
In line 602, its register constraint is a NULL string. I can't find how
compiler arranges the registers here in gcc.info.
Does anyone know the further information?
Kindly regards,
Roach
which kernel?
Due to the similarities i assume you are talking about some older linux version? Today's version arch/i386/pci/pcbios.c as well as the 2.6.8 i keep lying around for reading purposes look better in this regard. One can assume the code works identical to your version. Perhaps this was some undocumented (even undesired) feature, caused e.g. by the default value of some variable and a missing error check, which got corrected for gcc4 or icc compatibility?