Bruce Evans wrote:
> 
> On Thu, 23 Nov 2000, Julian Elischer wrote:
> 
> > locore.s includes:
> > #define ALLOCPAGES(foo) \
> >         movl    R(physfree), %esi ; \
> >         movl    $((foo)*PAGE_SIZE), %eax ; \
> >         addl    %esi, %eax ; \
> >         movl    %eax, R(physfree) ; \
> >         movl    %esi, %edi ; \
> >         movl    $((foo)*PAGE_SIZE),%ecx ; \
> >         xorl    %eax,%eax ; \
> >         cld ; \
> >         rep ; \
> >         stosb
> >
> >
> > might it be a very slight optimisation to change this to:
> > #define ALLOCPAGES(foo) \
> >         movl    R(physfree), %esi ; \
> >         movl    $((foo)*PAGE_SIZE), %eax ; \
> >         movl    %eax, %ecx ; \
> >         addl    %esi, %eax ; \
> >         movl    %eax, R(physfree) ; \
> >         movl    %esi, %edi ; \
> >         xorl    %eax,%eax ; \
> >         cld ; \
> >         rep ; \
> >         stosb
> 
> This can be improved more (3 instructions) by not loading physfree into
> the wrong register, and depending on stosb to increment the register,


so your assembly code would look like? (just curious).

> but it should be written in C anyway.  A relocation macro like R()
> should work just as well in C as in asm.  In C, the above is:
> 
>         bzero(R(physfree), (foo) * PAGE_SIZE);
>         R(physfree) += (foo) * PAGE_SIZE);
>         return (R(physfree));   /* In unusual as well as wrong reg %esi. */
> 
> Bruce

-- 
      __--_|\  Julian Elischer
     /       \ [EMAIL PROTECTED]
    (   OZ    ) World tour 2000
---> X_.---._/  presently in:  Budapest
            v




To Unsubscribe: send mail to [EMAIL PROTECTED]
with "unsubscribe freebsd-current" in the body of the message

Reply via email to