Re: [RFC PATCH 15/35] subarch support for controlling interrupt delivery

Christian Limpach
2006-05-10T10:35:42Z

On Tue, May 09, 2006 at 11:56:28PM +0200, Andi Kleen wrote:
>
> > Everything[1] in line:
> > -rwxr-xr-x 1 cl349 cl349 2633640 May 9 19:42 vmlinux-inline-stripped
> > Everything out of line:
> > -rwxr-xr-x 1 cl349 cl349 2621352 May 9 19:45 vmlinux-outline-stripped
> >
> > Additionally, I changed did a build with only __sti and __restore_flags
> > out of line and the others in line:
> > -rwxr-xr-x 1 cl349 cl349 2617256 May 9 19:50 vmlinux-hybrid-stripped
> >
> > __sti and __restore_flags are the ones which generate more code,
> > so it seemed more sensible to make the out of line.
> >
> > Any conlusions?
>
> It looks like hybrid is a clear winner at least from the code size, isn't it?

Yes, which is why I measured that one as well.

Now, the original concern was that we have the five operations implemented
as multi-line macros and doing a hybrid solution doesn't really address
that.

Also, it's not quite clear to me what's the best way to turn three of
the five into functions, whether inline or not.

For measuring the sizes, I did the following:
add void ___restore_flags(unsigned long *x) with the implementation
and then:
#define __restore_flags(x) ___restore_flags(&(x))

Alternatively, would it make sense to change __restore_flags to take
a pointer to flags instead? That would be quite an invasive change...

Any thoughts?

christian