[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Xen-merge] [patch] SMP alternatives for i386
 
 
Gerd Knorr wrote:
 
+#ifdef CONFIG_SMP
+#define alternative_smp(smpinstr, upinstr, args...)    \
+       asm volatile ("661:\n\t" smpinstr "\n662:\n"                     \
+                     ".section .smp_altinstructions,\"a\"\n"          \
+                     "  .align 4\n"                                 \
+                     "  .long 661b\n"            /* label */          \
+                     "  .long 663f\n"                  /* new instruction */   
      \
+                     "  .byte 0x68\n"            /* X86_FEATURE_UP */    \
+                     "  .byte 662b-661b\n"       /* sourcelen */      \
+                     "  .byte 664f-663f\n"       /* replacementlen */ \
+                     ".previous\n"                                           \
+                     ".section .smp_altinstr_replacement,\"awx\"\n"            
    \
+                     "663:\n\t" upinstr "\n"     /* replacement */    \
+                     "664:\n\t.fill 662b-661b,1,0x42\n" /* space for original 
*/ \
+                     ".previous" : args)
+
+#define LOCK_PREFIX \
+               ".section .smp_locks,\"a\"\n"       \
+               "  .align 4\n"                        \
+               "  .long 661f\n" /* address */        \
+               ".previous\n"                 \
+               "661:\n\tlock; "
+
+#else /* ! CONFIG_SMP */
+#define alternative_smp(smpinstr, upinstr, args...) \
+       asm volatile (upinstr : args)
+#define LOCK_PREFIX ""
+#endif
+
+#endif /* _I386_ALTERNATIVE_H */
 
 
 Overall technically, I like this patch.  Philosophically, I agree with 
it as well - but might I strongly suggest that you avoid the .section 
.previous directives and use the nestable .pushsection, .popsection 
instead?  We are almost to the complexity point with fault handling and 
alternatives that we will need nested section overrides.
Zach
_______________________________________________
Xen-merge mailing list
Xen-merge@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-merge
 
 
    
     |