On Sunday 15 February 2004 12:46, Dag-Erling Smørgrav wrote: > Alexandr Kovalenko <[EMAIL PROTECTED]> writes: > > Could you please explain me this? Result is fully reproduceable. Please > > note, that the only difference is the output file name. Even resulting > > files match bit-to-bit. [...] > > Definitely some kind of alignment problem, but it only shows up at > some optimization levels and not others.
I've tested the patch Dan mentioned before and the results were astonishing. Running the flops.c 1.2 program in a loop, lengthening the environment string by one byte each time, I get 8 successive runs of fast, then 8 successive runs of slow, where fast and slow vary between 650 and 990 mflops. With the patch, the performance is always 990, within a few percent. Should I commit this? RCS file: /big/ncvs/src/sys/kern/kern_exec.c,v retrieving revision 1.235 diff -u -w -r1.235 kern_exec.c --- kern_exec.c 28 Dec 2003 04:37:59 -0000 1.235 +++ kern_exec.c 11 Feb 2004 16:47:28 -0000 @@ -1014,6 +1014,15 @@ */ vectp = (char **)(destp - (imgp->argc + imgp->envc + 2) * sizeof(char *)); + + /* + * Align stack to a multiple of 0x20. + * XXX vectp has the wrong type; we usually want a vm_offset_t; + * the suword() family takes a void *, but should take a vm_offset_t. + * XXX should align stack for signals too. + * XXX should do this more machine/compiler-independently. + */ + vectp = (char **)(((vm_offset_t)vectp & ~(vm_offset_t)0x1F) - 4); /* * vectp also becomes our initial stack base -- "Where am I, and what am I doing in this handbasket?" Wes Peters Softweyr LLC [EMAIL PROTECTED] http://softweyr.com/ _______________________________________________ [EMAIL PROTECTED] mailing list http://lists.freebsd.org/mailman/listinfo/freebsd-hackers To unsubscribe, send any mail to "[EMAIL PROTECTED]"