Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 5068debf authored by Ralf Baechle's avatar Ralf Baechle
Browse files

New hazard handling function back_to_back_c0_hazard() to handle back to


back mtc0 / mfc0 pairs from the same coprocessor register.

Signed-off-by: default avatarRalf Baechle <ralf@linux-mips.org>
parent 0f04afb5
Loading
Loading
Loading
Loading
+21 −0
Original line number Diff line number Diff line
@@ -124,6 +124,9 @@ __asm__(
		".set\tmips32\n\t"					\
		"_ssnop; _ssnop; _ssnop; _ssnop\n\t"			\
		".set\tmips0")

#define back_to_back_c0_hazard()	do { } while (0)

#else

/*
@@ -141,6 +144,12 @@ __asm__(
		"nop; nop; nop; nop; nop; nop;\n\t"			\
		".set reorder\n\t")

#define back_to_back_c0_hazard()					\
	__asm__ __volatile__(						\
	"	.set noreorder				\n"		\
	"	nop; nop; nop				\n"		\
	"	.set reorder				\n")

#endif

/*
@@ -170,6 +179,10 @@ __asm__(
	__asm__ __volatile__(						\
	"_ehb\t\t\t\t# irq_disable_hazard")

#define back_to_back_c0_hazard()					\
	__asm__ __volatile__(						\
	"_ehb\t\t\t\t# back_to_back_c0_hazard")

#elif defined(CONFIG_CPU_R10000) || defined(CONFIG_CPU_RM9000)

/*
@@ -186,6 +199,8 @@ __asm__(
#define irq_enable_hazard()	do { } while (0)
#define irq_disable_hazard()	do { } while (0)

#define back_to_back_c0_hazard()	do { } while (0)

#else

/*
@@ -210,6 +225,12 @@ __asm__(
	__asm__ __volatile__(						\
	"_ssnop; _ssnop; _ssnop;\t\t# irq_disable_hazard")

#define back_to_back_c0_hazard()					\
	__asm__ __volatile__(						\
	"	.set noreorder				\n"		\
	"	nop; nop; nop				\n"		\
	"	.set reorder				\n")

#endif

#endif /* __ASSEMBLY__ */