Re: [Xen-ia64-devel] [Patch] linux: set memory attribute in inlineasm
Hi, >On Sat, Apr 05, 2008 at 04:33:12PM +0200, [EMAIL PROTECTED] wrote: >> Selon Isaku Yamahata <[EMAIL PROTECTED]>: >> >> > diff -r bb2f8ba47833 include/asm-ia64/xen/privop.h >> > --- a/include/asm-ia64/xen/privop.hTue Mar 25 12:37:54 2008 -0600 >> > +++ b/include/asm-ia64/xen/privop.hSat Apr 05 07:27:30 2008 +0900 >> > @@ -67,7 +67,7 @@ >> > #endif >> > >> > #ifndef __ASSEMBLY__ >> > -#define XEN_HYPER_SSM_I asm("break %0" : : "i" (HYPERPRIVOP_SSM_I)) >> > +#define XEN_HYPER_SSM_I asm("break %0" : : "i" (HYPERPRIVOP_SSM_I): >> > "memory") >> > #define XEN_HYPER_GET_IVR asm("break %0" : : "i" (HYPERPRIVOP_GET_IVR)) >> > >> > // >> > >> > Shouldn't those be asm volatile, but asm? >> >> IIRC, according to the gcc doc asm without outputs are volatile. > >Ah, right. From gcc info. >> Assembler Instructions with C Expression Operands >> An `asm' instruction without any output operands will be treated >> identically to a volatile `asm' instruction. Thank you for your comments. I also think it's right. And I found XEN_HYPER_GET_IVR is wrong because it doesn't have return value. But it is not used, so I just remove it. I updated my patch. Signed-off-by: Akio Takebe <[EMAIL PROTECTED]> Best Regards, Akio Takebe inline_asm_barrier.3.patch Description: Binary data ___ Xen-ia64-devel mailing list Xen-ia64-devel@lists.xensource.com http://lists.xensource.com/xen-ia64-devel
Re: [Xen-ia64-devel] [Patch] linux: set memory attribute in inlineasm
On Sat, Apr 05, 2008 at 04:33:12PM +0200, [EMAIL PROTECTED] wrote: > Selon Isaku Yamahata <[EMAIL PROTECTED]>: > > > diff -r bb2f8ba47833 include/asm-ia64/xen/privop.h > > --- a/include/asm-ia64/xen/privop.h Tue Mar 25 12:37:54 2008 -0600 > > +++ b/include/asm-ia64/xen/privop.h Sat Apr 05 07:27:30 2008 +0900 > > @@ -67,7 +67,7 @@ > > #endif > > > > #ifndef __ASSEMBLY__ > > -#defineXEN_HYPER_SSM_I asm("break %0" : : "i" > > (HYPERPRIVOP_SSM_I)) > > +#defineXEN_HYPER_SSM_I asm("break %0" : : "i" > > (HYPERPRIVOP_SSM_I): > > "memory") > > #defineXEN_HYPER_GET_IVR asm("break %0" : : "i" > > (HYPERPRIVOP_GET_IVR)) > > > > // > > > > Shouldn't those be asm volatile, but asm? > > IIRC, according to the gcc doc asm without outputs are volatile. Ah, right. From gcc info. > Assembler Instructions with C Expression Operands > An `asm' instruction without any output operands will be treated > identically to a volatile `asm' instruction. -- yamahata ___ Xen-ia64-devel mailing list Xen-ia64-devel@lists.xensource.com http://lists.xensource.com/xen-ia64-devel
Re: [Xen-ia64-devel] [Patch] linux: set memory attribute in inlineasm
Selon Isaku Yamahata <[EMAIL PROTECTED]>: > diff -r bb2f8ba47833 include/asm-ia64/xen/privop.h > --- a/include/asm-ia64/xen/privop.h Tue Mar 25 12:37:54 2008 -0600 > +++ b/include/asm-ia64/xen/privop.h Sat Apr 05 07:27:30 2008 +0900 > @@ -67,7 +67,7 @@ > #endif > > #ifndef __ASSEMBLY__ > -#define XEN_HYPER_SSM_I asm("break %0" : : "i" > (HYPERPRIVOP_SSM_I)) > +#define XEN_HYPER_SSM_I asm("break %0" : : "i" > (HYPERPRIVOP_SSM_I): > "memory") > #define XEN_HYPER_GET_IVR asm("break %0" : : "i" > (HYPERPRIVOP_GET_IVR)) > > // > > Shouldn't those be asm volatile, but asm? IIRC, according to the gcc doc asm without outputs are volatile. Tristan. ___ Xen-ia64-devel mailing list Xen-ia64-devel@lists.xensource.com http://lists.xensource.com/xen-ia64-devel
Re: [Xen-ia64-devel] [Patch] linux: set memory attribute in inlineasm
diff -r bb2f8ba47833 include/asm-ia64/xen/privop.h --- a/include/asm-ia64/xen/privop.h Tue Mar 25 12:37:54 2008 -0600 +++ b/include/asm-ia64/xen/privop.h Sat Apr 05 07:27:30 2008 +0900 @@ -67,7 +67,7 @@ #endif #ifndef __ASSEMBLY__ -#defineXEN_HYPER_SSM_I asm("break %0" : : "i" (HYPERPRIVOP_SSM_I)) +#defineXEN_HYPER_SSM_I asm("break %0" : : "i" (HYPERPRIVOP_SSM_I): "memory") #defineXEN_HYPER_GET_IVR asm("break %0" : : "i" (HYPERPRIVOP_GET_IVR)) // Shouldn't those be asm volatile, but asm? -- yamahata ___ Xen-ia64-devel mailing list Xen-ia64-devel@lists.xensource.com http://lists.xensource.com/xen-ia64-devel
Re: [Xen-ia64-devel] [Patch] linux: set memory attribute in inlineasm
Hi, Aron >Hi Akio, > >Akio Takebe wrote: [Fri Apr 04 2008, 05:44:10AM EDT] >> @@ -251,7 +251,7 @@ extern void xen_set_eflag(unsigned long) >> #define xen_ia64_intrin_local_irq_restore(x) \ >> { \ >> if (is_running_on_xen()) { \ >> -if ((x) & IA64_PSR_I) { xen_ssm_i(); } \ >> +if (x) { xen_ssm_i(); } \ >> else { xen_rsm_i(); } \ >> } \ >> else __ia64_intrin_local_irq_restore((x)); \ > >What does this part do? Thank you for your review. Sorry for my confusion. The (x)&IA64_PSR_I should be not unnecessary part, because ia64_intrin_local_irq_restore() is always called via __local_irq_restore(x). It is the same as __ia64_intrin_local_irq_restore(x) in include/asm-ia64/gcc_intrin.h. But since it's a different concept with this title, I droped the hunk. Signed-off-by: Akio Takebe <[EMAIL PROTECTED]> Best Regards, Akio Takebe inline_asm_barrier.2.patch Description: Binary data ___ Xen-ia64-devel mailing list Xen-ia64-devel@lists.xensource.com http://lists.xensource.com/xen-ia64-devel