Linux MIPS Architecture development
 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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox