> let's look around:
> 
> gdb build/util/x86emu/vm86.o
> 
> Dump of assembler code for function biosint:
> 0x000004f3 <biosint+0>:       push   %esi
> 0x000004f4 <biosint+1>:       mov    %eax,%esi
> 0x000004f6 <biosint+3>:       push   %ebx
> 0x000004f7 <biosint+4>:       sub    $0x4,%esp
> 0x000004fa <biosint+7>:       movzwl 0x34(%esp),%eax
> 0x000004ff <biosint+12>:      mov    0x30(%esp),%ebx
> 0x00000503 <biosint+16>:      mov    %eax,(%esp)
> 0x00000506 <biosint+19>:      push   %esi
> 0x00000507 <biosint+20>:      push   $0x86
> 0x0000050c <biosint+25>:      push   $0x7
> 0x0000050e <biosint+27>:      call   0x50f <biosint+28>
> 
> We are passing arg 1 in eax. How could this be?
> 
> Simple. We got Clever in v3:
> 
> -mregparm=3
> 
> A nice optimization that utterly destroys the bios interrupt support.
> 
> Myles, try setting -mregparm=0 and see if life is better.

I'll try it when I get back to that machine.  My laptop isn't AMD64, so I
can't run SimNOW on it.

Thanks for finding that.

> I vote we get rid of this type of Cleverness. It's just not
> performance critical in a bios. We're not an OS and we should keep it
> simple. I don't think we'll live or die on 3 on-stack variables.

I'll be interested to see how much faster v3 is when it's not set to SPEW.
Right now it seems a lot slower than v2dsr on SimNOW.

Myles



--
coreboot mailing list: [email protected]
http://www.coreboot.org/mailman/listinfo/coreboot

Reply via email to