Subject: Re: [PATCH 5/6] Support for the Ebony 440GP reference board in arch/powerpc

From: David Gibson <[email-masked]>
Date: Sun, 6 May 2007 10:43:19 +1000

On Sat, May 05, 2007 at 10:37:37PM +0200, Segher Boessenkool wrote:
> >>> +static void ebony_exit(void)
> >>> +{
> >>> +     unsigned long tmp;
> >>> +
> >>> +     asm volatile (
> >>> +             "mfspr  %0,%1\n"
> >>> +             "oris   %0,%0,%2@h\n"
> >>> +             "mtspr  %1,%0"
> >>> +             : "=&r"(tmp) : "i"(SPRN_DBCR0), "i"(DBCR0_RST_SYSTEM)
> >>
> >> You don't have to pass in the constants here, you can specify them in
> >> the asm. Makes it a little more readable.
> >
> > How?   CPP doesn't apply inside the strings.
> 
> So put it outside the strings:
> 
> +     asm volatile (
> +             "mfspr  %0," #SPRN_DBCR0 "\n\t"
> +             "oris   %0,%0," #DBCR0_RST_SYSTEM "@h\n\t"
> +             "mtspr  " #SPRN_DBCR0 ",%0"
> +             : "=&r"(tmp));

Um, I think stringify(SPRN_DBCR0) is needed there, not just a bare #.
At which point it's not entirely clear to be that just using the "i"
constraint isn't the simplest option after all.

-- 
David Gibson			| I'll have my music baroque, and my code
david AT gibson.dropbear.id.au	| minimalist, thank you.  NOT _the_ _other_
				| _way_ _around_!
http://www.ozlabs.org/~dgibson