+# memory barrier function implemented only for some architectures
+config BR2_PACKAGE_OPROFILE_ARCH_SUPPORTS
+       bool
+       default y
+       depends on BR2_arceb || BR2_arcle || BR2_arm || BR2_armeb || \
+               BR2_aarch64 || BR2_aarch64_be || BR2_i386 || BR2_mips || \
+               BR2_mipsel || BR2_mips64 || BR2_mips64el || BR2_powerpc || \
+               BR2_powerpc64 || BR2_powerpc64le || BR2_sh || \
+               BR2_sparc || BR2_sparc64 || BR2_x86_64
+
 config BR2_PACKAGE_OPROFILE
        bool "oprofile"
        depends on BR2_USE_MMU # fork()
        select BR2_PACKAGE_BINUTILS
        select BR2_PACKAGE_LIBPFM4 if BR2_powerpc
        depends on BR2_INSTALL_LIBSTDCPP
-       depends on !BR2_nios2 # binutils
        depends on BR2_USE_WCHAR # binutils
-       # no memory barrier functions
-       depends on !BR2_xtensa && !BR2_microblaze
+       depends on BR2_PACKAGE_OPROFILE_ARCH_SUPPORTS
        # libpfm4 is needed on PowerPC, and requires thread support
        depends on BR2_TOOLCHAIN_HAS_THREADS_NPTL || !BR2_powerpc
        help
 
 comment "oprofile needs a toolchain w/ C++, wchar"
        depends on BR2_USE_MMU
-       depends on !BR2_nios2 && !BR2_xtensa && !BR2_microblaze
+       depends on BR2_PACKAGE_OPROFILE_ARCH_SUPPORTS
        depends on !BR2_INSTALL_LIBSTDCPP || !BR2_USE_WCHAR
 
 comment "oprofile needs a toolchain w/ NPTL on PPC"