Commit 8458c628 authored by Nicholas Piggin's avatar Nicholas Piggin Committed by Michael Ellerman
Browse files

powerpc: bad_page_fault get registers from regs



Similar to the previous patch this makes interrupt handler function
types more regular so they can be wrapped with the next patch.

Signed-off-by: default avatarNicholas Piggin <npiggin@gmail.com>
Signed-off-by: default avatarMichael Ellerman <mpe@ellerman.id.au>
Link: https://lore.kernel.org/r/20210130130852.2952424-12-npiggin@gmail.com
parent 73d7a979
Loading
Loading
Loading
Loading
+2 −2
Original line number Diff line number Diff line
@@ -112,8 +112,8 @@

struct pt_regs;
long do_page_fault(struct pt_regs *);
extern void bad_page_fault(struct pt_regs *, unsigned long, int);
void __bad_page_fault(struct pt_regs *regs, unsigned long address, int sig);
void bad_page_fault(struct pt_regs *, int);
void __bad_page_fault(struct pt_regs *regs, int sig);
extern void _exception(int, struct pt_regs *, int, unsigned long);
extern void _exception_pkey(struct pt_regs *, unsigned long, int);
extern void die(const char *, struct pt_regs *, long);
+1 −2
Original line number Diff line number Diff line
@@ -672,9 +672,8 @@ handle_page_fault:
	lwz	r0,_TRAP(r1)
	clrrwi	r0,r0,1
	stw	r0,_TRAP(r1)
	mr	r5,r3
	mr	r4,r3		/* err arg for bad_page_fault */
	addi	r3,r1,STACK_FRAME_OVERHEAD
	lwz	r4,_DAR(r1)
	bl	__bad_page_fault
	b	ret_from_except_full

+1 −2
Original line number Diff line number Diff line
@@ -1016,9 +1016,8 @@ storage_fault_common:
	bne-	1f
	b	ret_from_except_lite
1:	bl	save_nvgprs
	mr	r5,r3
	mr	r4,r3
	addi	r3,r1,STACK_FRAME_OVERHEAD
	ld	r4,_DAR(r1)
	bl	__bad_page_fault
	b	ret_from_except

+1 −1
Original line number Diff line number Diff line
@@ -1612,7 +1612,7 @@ void alignment_exception(struct pt_regs *regs)
	if (user_mode(regs))
		_exception(sig, regs, code, regs->dar);
	else
		bad_page_fault(regs, regs->dar, sig);
		bad_page_fault(regs, sig);

bail:
	exception_exit(prev_state);
+2 −2
Original line number Diff line number Diff line
@@ -1539,7 +1539,7 @@ long do_hash_fault(struct pt_regs *regs)
	 * the access, or panic if there isn't a handler.
	 */
	if (unlikely(in_nmi())) {
		bad_page_fault(regs, ea, SIGSEGV);
		bad_page_fault(regs, SIGSEGV);
		return 0;
	}

@@ -1578,7 +1578,7 @@ long do_hash_fault(struct pt_regs *regs)
			else
				_exception(SIGBUS, regs, BUS_ADRERR, ea);
		} else {
			bad_page_fault(regs, ea, SIGBUS);
			bad_page_fault(regs, SIGBUS);
		}
		err = 0;

Loading