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

Commit f94d9a8e authored by Ralf Baechle's avatar Ralf Baechle
Browse files

MIPS: Idle: Do address fiddlery in helper functions.

parent bdc92d74
Loading
Loading
Loading
Loading
+11 −0
Original line number Diff line number Diff line
@@ -8,4 +8,15 @@ extern asmlinkage void r4k_wait(void);
extern void r4k_wait_irqoff(void);
extern void __pastwait(void);

static inline int using_rollback_handler(void)
{
	return cpu_wait == r4k_wait;
}

static inline int address_is_in_r4k_wait_irqoff(unsigned long addr)
{
	return addr >= (unsigned long)r4k_wait_irqoff &&
	       addr < (unsigned long)__pastwait;
}

#endif /* __ASM_IDLE_H  */
+1 −2
Original line number Diff line number Diff line
@@ -914,8 +914,7 @@ void smtc_send_ipi(int cpu, int type, unsigned int action)
			 */
			if (cpu_wait == r4k_wait_irqoff) {
				tcrestart = read_tc_c0_tcrestart();
				if (tcrestart >= (unsigned long)r4k_wait_irqoff
				    && tcrestart < (unsigned long)__pastwait) {
				if (address_is_in_r4k_wait_irqoff(tcrestart)) {
					write_tc_c0_tcrestart(__pastwait);
					tcstatus &= ~TCSTATUS_IXMT;
					write_tc_c0_tcstatus(tcstatus);
+3 −4
Original line number Diff line number Diff line
@@ -1542,7 +1542,7 @@ static void *set_vi_srs_handler(int n, vi_handler_t addr, int srs)
		extern char except_vec_vi, except_vec_vi_lui;
		extern char except_vec_vi_ori, except_vec_vi_end;
		extern char rollback_except_vec_vi;
		char *vec_start = (cpu_wait == r4k_wait) ?
		char *vec_start = using_rollback_handler() ?
			&rollback_except_vec_vi : &except_vec_vi;
#ifdef CONFIG_MIPS_MT_SMTC
		/*
@@ -1812,10 +1812,8 @@ void __init trap_init(void)
	extern char except_vec4;
	extern char except_vec3_r4000;
	unsigned long i;
	int rollback;

	check_wait();
	rollback = (cpu_wait == r4k_wait);

#if defined(CONFIG_KGDB)
	if (kgdb_early_setup)
@@ -1892,7 +1890,8 @@ void __init trap_init(void)
	if (board_be_init)
		board_be_init();

	set_except_vector(0, rollback ? rollback_handle_int : handle_int);
	set_except_vector(0, using_rollback_handler() ? rollback_handle_int
						      : handle_int);
	set_except_vector(1, handle_tlbm);
	set_except_vector(2, handle_tlbl);
	set_except_vector(3, handle_tlbs);