diff options
author | Ralf Baechle <ralf@linux-mips.org> | 2005-08-17 17:44:08 +0000 |
---|---|---|
committer | Ralf Baechle <ralf@linux-mips.org> | 2005-10-29 19:32:10 +0100 |
commit | 340ee4b98c0543b5632cac975a7449a2d28762d8 (patch) | |
tree | 94b7315d53d6eadd145c8691f0a9925f5ae389f5 /arch/mips/kernel/vpe.c | |
parent | d03d0a57754cb820d318d2234c60b728eb38a94d (diff) | |
download | kernel_samsung_smdk4412-340ee4b98c0543b5632cac975a7449a2d28762d8.tar.gz kernel_samsung_smdk4412-340ee4b98c0543b5632cac975a7449a2d28762d8.tar.bz2 kernel_samsung_smdk4412-340ee4b98c0543b5632cac975a7449a2d28762d8.zip |
Virtual SMP support for the 34K.
Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
Diffstat (limited to 'arch/mips/kernel/vpe.c')
-rw-r--r-- | arch/mips/kernel/vpe.c | 15 |
1 files changed, 8 insertions, 7 deletions
diff --git a/arch/mips/kernel/vpe.c b/arch/mips/kernel/vpe.c index 6bf42ba08f0..97fefcc9dbe 100644 --- a/arch/mips/kernel/vpe.c +++ b/arch/mips/kernel/vpe.c @@ -32,7 +32,7 @@ * mknod /dev/vpe0 c 63 0 * mknod /dev/vpe1 c 63 1 */ - +#include <linux/config.h> #include <linux/kernel.h> #include <linux/module.h> #include <linux/fs.h> @@ -49,6 +49,7 @@ #include <linux/poll.h> #include <linux/bootmem.h> #include <asm/mipsregs.h> +#include <asm/mipsmtregs.h> #include <asm/cacheflush.h> #include <asm/atomic.h> #include <asm/cpu.h> @@ -697,7 +698,7 @@ int vpe_run(vpe_t * v) dvpe(); /* Put MVPE's into 'configuration state' */ - write_c0_mvpcontrol(read_c0_mvpcontrol() | MVPCONTROL_VPC); + set_c0_mvpcontrol(MVPCONTROL_VPC); if (!list_empty(&v->tc)) { if ((t = list_entry(v->tc.next, struct tc, tc)) == NULL) { @@ -760,7 +761,7 @@ int vpe_run(vpe_t * v) write_vpe_c0_cause(0); /* take system out of configuration state */ - write_c0_mvpcontrol(read_c0_mvpcontrol() & ~MVPCONTROL_VPC); + clear_c0_mvpcontrol(MVPCONTROL_VPC); /* clear interrupts enabled IE, ERL, EXL, and KSU from c0 status */ write_vpe_c0_status(read_vpe_c0_status() & ~(ST0_ERL | ST0_KSU | ST0_IE | ST0_EXL)); @@ -1134,7 +1135,7 @@ int vpe_free(vpe_handle vpe) evpe_flags = dvpe(); /* Put MVPE's into 'configuration state' */ - write_c0_mvpcontrol(read_c0_mvpcontrol() | MVPCONTROL_VPC); + set_c0_mvpcontrol(MVPCONTROL_VPC); settc(t->index); write_vpe_c0_vpeconf0(read_vpe_c0_vpeconf0() & ~VPECONF0_VPA); @@ -1145,7 +1146,7 @@ int vpe_free(vpe_handle vpe) v->state = VPE_STATE_UNUSED; - write_c0_mvpcontrol(read_c0_mvpcontrol() & ~MVPCONTROL_VPC); + clear_c0_mvpcontrol(MVPCONTROL_VPC); evpe(evpe_flags); return 0; @@ -1191,7 +1192,7 @@ static int __init vpe_module_init(void) dvpe(); /* Put MVPE's into 'configuration state' */ - write_c0_mvpcontrol(read_c0_mvpcontrol() | MVPCONTROL_VPC); + set_c0_mvpcontrol(MVPCONTROL_VPC); /* dump_mtregs(); */ @@ -1270,7 +1271,7 @@ static int __init vpe_module_init(void) } /* release config state */ - write_c0_mvpcontrol(read_c0_mvpcontrol() & ~MVPCONTROL_VPC); + clear_c0_mvpcontrol(MVPCONTROL_VPC); return 0; } |