xref: /openbmc/linux/arch/mips/dec/prom/locore.S (revision 1da177e4)
11da177e4SLinus Torvalds/*
21da177e4SLinus Torvalds * locore.S
31da177e4SLinus Torvalds */
41da177e4SLinus Torvalds#include <asm/asm.h>
51da177e4SLinus Torvalds#include <asm/regdef.h>
61da177e4SLinus Torvalds#include <asm/mipsregs.h>
71da177e4SLinus Torvalds
81da177e4SLinus Torvalds	.text
91da177e4SLinus Torvalds
101da177e4SLinus Torvalds/*
111da177e4SLinus Torvalds * Simple general exception handling routine. This one is used for the
121da177e4SLinus Torvalds * Memory sizing routine for pmax machines. HK
131da177e4SLinus Torvalds */
141da177e4SLinus Torvalds
151da177e4SLinus TorvaldsNESTED(genexcept_early, 0, sp)
161da177e4SLinus Torvalds	.set	noat
171da177e4SLinus Torvalds	.set	noreorder
181da177e4SLinus Torvalds
191da177e4SLinus Torvalds	mfc0	k0, CP0_STATUS
201da177e4SLinus Torvalds	la	k1, mem_err
211da177e4SLinus Torvalds
221da177e4SLinus Torvalds	sw	k0, 0(k1)
231da177e4SLinus Torvalds
241da177e4SLinus Torvalds	mfc0	k0, CP0_EPC
251da177e4SLinus Torvalds	nop
261da177e4SLinus Torvalds	addiu	k0, 4		# skip the causing instruction
271da177e4SLinus Torvalds	jr	k0
281da177e4SLinus Torvalds	 rfe
291da177e4SLinus TorvaldsEND(genexcept_early)
301da177e4SLinus Torvalds
31