Subject: x86 assembly again
To: None <port-i386@netbsd.org, port-xen@netbsd.org>
From: Manuel Bouyer <bouyer@antioche.eu.org>
List: port-xen
Date: 03/16/2005 01:47:16
Hi,
again, I'd like some sanity checks on my assembly though.
I think in this piece of code:
IDTVEC(spllower)
#if defined(DDB) || defined(GPROF)
pushl %ebp
movl %esp,%ebp
MCOUNT_ASM
#endif /* defined(DDB) || defined(GPROF) */
pushl %ebx
pushl %esi
pushl %edi
pushl %ecx
#if defined(DDB) || defined(GPROF)
movl 8(%ebp),%ebx
#else /* defined(DDB) || defined(GPROF) */
movl 16(%esp),%ebx
#endif /* defined(DDB) || defined(GPROF) */
the movl 16(%esp),%ebx is broken, it should be 20. However the
DDB | GPROF case is right, as we saved %esp in %ebp before pushing more
registers.
I am right ?
--
Manuel Bouyer <bouyer@antioche.eu.org>
NetBSD: 26 ans d'experience feront toujours la difference
--