All of lore.kernel.org
 help / color / mirror / Atom feed
From: Alexandr Andreev <andreev@niisi.msk.ru>
To: linux-mips@oss.sgi.com
Subject: Troubles in r2300.c
Date: Wed, 06 Jun 2001 21:39:22 -0400	[thread overview]
Message-ID: <3B1EDB4A.4080803@niisi.msk.ru> (raw)

Hi.
In the r2300.c ,in some functions ( like the r3k_cache_size and so on ), 
the
CONFIG register is modified. To return this register to initial state, the
save_and_cli(flags) and the restore_flags(flags) functions are used. The
restore_flags do not modify whole STATUS register, but only the 
Interrupt Enable
bit. So we should use the read_32bit_cp0_register and the 
write_32bit_cp0_register
functions instead ( like it was in linux-2.4.1 ).
And also, this patch adds R3081E CPU support to the ld_mmu_r2300() function.

diff -u -r1.12 r2300.c
--- arch/mips/mm/r2300.c        2001/05/31 14:27:32     1.12
+++ arch/mips/mm/r2300.c        2001/06/06 17:10:47
@@ -125,7 +125,7 @@

       p = (volatile unsigned long *) KSEG0;

-       save_and_cli(flags);
+       flags = read_32bit_cp0_register(CP0_STATUS);

       /* isolate cache space */
       write_32bit_cp0_register(CP0_STATUS, (ca_flags|flags)&~ST0_IEC);
@@ -147,7 +147,7 @@
               if (size > 0x40000)
                       size = 0;
       }
-       restore_flags(flags);
+       write_32bit_cp0_register(CP0_STATUS, flags);

       return size * sizeof(*p);
}
@@ -170,7 +170,7 @@
       if (size > icache_size)
               size = icache_size;

-       save_and_cli(flags);
+       flags = read_32bit_cp0_register(CP0_STATUS);

       /* isolate cache space */
       write_32bit_cp0_register(CP0_STATUS, 
(ST0_ISC|ST0_SWC|flags)&~ST0_IEC);
@@ -212,7 +212,7 @@
               p += 0x080;
       }

-       restore_flags(flags);
+       write_32bit_cp0_register(CP0_STATUS,flags);
}

static void r3k_flush_dcache_range(unsigned long start, unsigned long end)
@@ -224,7 +224,7 @@
       if (size > dcache_size)
               size = dcache_size;

-       save_and_cli(flags);
+       flags = read_32bit_cp0_register(CP0_STATUS);

       /* isolate cache space */
       write_32bit_cp0_register(CP0_STATUS, (ST0_ISC|flags)&~ST0_IEC);
@@ -266,7 +266,7 @@
               p += 0x080;
       }

-       restore_flags(flags);
+       write_32bit_cp0_register(CP0_STATUS,flags);
}

static inline unsigned long get_phys_page (unsigned long addr,
@@ -714,6 +714,7 @@
               case CPU_R3000:
               case CPU_R3000A:
               case CPU_R3081:
+               case CPU_R3081E:

                       r3k_probe_cache();

             reply	other threads:[~2001-06-06 17:41 UTC|newest]

Thread overview: 4+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2001-06-07  1:39 Alexandr Andreev [this message]
2001-06-06 18:34 ` Troubles in r2300.c Maciej W. Rozycki
2001-06-06 19:55 ` Ralf Baechle
2001-06-07 23:11   ` Alexandr Andreev

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=3B1EDB4A.4080803@niisi.msk.ru \
    --to=andreev@niisi.msk.ru \
    --cc=linux-mips@oss.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.