Merge branch 'x86-asm-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git...
[linux-2.6.git] / arch / x86 / kernel / alternative.c
index 2589ea4c60ce145bfadbb2b925e6f81f85957bd8..e6ea0342c8f86e424ae164a479c5b3ffd411e867 100644 (file)
@@ -392,6 +392,24 @@ void alternatives_smp_switch(int smp)
        mutex_unlock(&smp_alt);
 }
 
+/* Return 1 if the address range is reserved for smp-alternatives */
+int alternatives_text_reserved(void *start, void *end)
+{
+       struct smp_alt_module *mod;
+       u8 **ptr;
+       u8 *text_start = start;
+       u8 *text_end = end;
+
+       list_for_each_entry(mod, &smp_alt_modules, next) {
+               if (mod->text > text_end || mod->text_end < text_start)
+                       continue;
+               for (ptr = mod->locks; ptr < mod->locks_end; ptr++)
+                       if (text_start <= *ptr && text_end >= *ptr)
+                               return 1;
+       }
+
+       return 0;
+}
 #endif
 
 #ifdef CONFIG_PARAVIRT