All of lore.kernel.org
 help / color / mirror / Atom feed
From: Ulf Carlsson <grim@zigzegv.ml.org>
To: linux@cthulhu.engr.sgi.com
Subject: [PATCH] sc
Date: Wed, 19 Aug 1998 22:03:05 +0200 (CEST)	[thread overview]
Message-ID: <199808192003.WAA13671@calypso.saturn> (raw)

[-- Attachment #1: Type: text/plain, Size: 150 bytes --]

Hi,

Here's the patch for SC, still some BUS Errors when using the network device
(bootp doesn't work), sometimes even without obvious reason.

- Ulf

[-- Attachment #2: /home/grim/sc-patch.diff --]
[-- Type: text/plain, Size: 1695 bytes --]

--- head.S	Thu Jul  9 19:51:48 1998
+++ sgi-lin/linux/arch/mips/kernel/head.S	Tue Aug 18 22:34:35 1998
@@ -5,6 +5,7 @@
  *  Copyright (C) 1996, 1997, 1998 Ralf Baechle
  *  Modified for DECStation and hence R3000 support by Paul M. Antoine
  *  Further modifications by David S. Miller
+ *  Modified for R4000SC/R44000SC support by Ulf Carlsson
  *
  *  Head.S contains the MIPS exception handler and startup code.
  */
@@ -22,6 +23,7 @@
 #include <asm/stackframe.h>
 #include <asm/bootinfo.h>
 #include <asm/cpu.h>
+#include <asm/cacheops.h>
 
 	.text
 	/*
@@ -315,16 +317,46 @@
 	NESTED(except_vec3_r4000, 0, sp)
 	.set	noat
 	mfc0	k1, CP0_CAUSE
-
-	/* XXX Have to check for VCE's _before_ we do a load or store. */
-
-	la	k0, exception_handlers
 	andi	k1, k1, 0x7c
+	li	k0, 31<<2
+	beq	k1, k0, handle_vced
+	 li	k0, 14<<2
+	beq	k1, k0, handle_vcei
+	 la	k0, exception_handlers
 	addu	k0, k0, k1
 	lw	k0, (k0)
 	nop
 	jr	k0
 	 nop
+
+/*
+ * Big shit, we now may have two dirty primary cache lines for the same
+ * physical address.  We can savely invalidate the line pointed to by
+ * c0_badvaddr because after return from this exception handler the load /
+ * store will be re-executed.
+ *
+ * XXX should bitch on console.
+ */
+handle_vced:
+	mfc0	k0, CP0_BADVADDR
+	mtc0	zero, CP0_TAGLO
+	nop;nop
+	cache	Index_Store_Tag_D,(k0)
+	nop;nop
+	cache	Hit_Writeback_Inv_SD,(k0)
+	eret
+
+/*
+ * VCEI is simpler and should never happen unless userland is doing something
+ * really stupid.  It's actually worth a SIGFRY.
+ *
+ * XXX should bitch on console.
+ */
+handle_vcei:
+	mfc0	k0, CP0_BADVADDR
+	cache	Hit_Invalidate_SD,(k0)		# also cleans pi
+	eret
+
 	END(except_vec3_r4000)
 	.set	at
 

             reply	other threads:[~1998-08-19 20:03 UTC|newest]

Thread overview: 4+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
1998-08-19 20:03 Ulf Carlsson [this message]
1998-08-19 20:16 ` [PATCH] sc Alex deVries
1998-08-20  0:07   ` ralf
1998-08-20  4:55     ` Ulf Carlsson

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=199808192003.WAA13671@calypso.saturn \
    --to=grim@zigzegv.ml.org \
    --cc=linux@cthulhu.engr.sgi.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.