summaryrefslogtreecommitdiffstats
path: root/arch/mips/dec
diff options
context:
space:
mode:
authorRalf Baechle <ralf@linux-mips.org>1997-12-16 06:06:25 +0000
committerRalf Baechle <ralf@linux-mips.org>1997-12-16 06:06:25 +0000
commitaa944aa3453e47706685bc562711a9e87375941e (patch)
tree8fb37a65f205a90412917ca2b91c429263ef1790 /arch/mips/dec
parent967c65a99059fd459b956c1588ce0ba227912c4e (diff)
Merge with Linux 2.1.72, part 2.
The new signal code with exception of the code for the rt signals. The definitions in <asm/siginfo.h> and <asm/ucontext.h> are currently just stolen from the Alpha and will need to be overhauled.
Diffstat (limited to 'arch/mips/dec')
-rw-r--r--arch/mips/dec/Makefile24
-rw-r--r--arch/mips/dec/boot.S92
-rw-r--r--arch/mips/dec/decstation.S364
-rw-r--r--arch/mips/dec/decstation.c200
-rw-r--r--arch/mips/dec/hw-access.c26
-rw-r--r--arch/mips/dec/int-handler.S246
-rw-r--r--arch/mips/dec/ld.script47
-rw-r--r--arch/mips/dec/reset.c28
-rw-r--r--arch/mips/dec/setup.c50
9 files changed, 0 insertions, 1077 deletions
diff --git a/arch/mips/dec/Makefile b/arch/mips/dec/Makefile
deleted file mode 100644
index ccfba0694..000000000
--- a/arch/mips/dec/Makefile
+++ /dev/null
@@ -1,24 +0,0 @@
-#
-# Makefile for the DECstation family specific parts of the kernel
-#
-# Note! Dependencies are done automagically by 'make dep', which also
-# removes any old dependencies. DON'T put your own dependencies here
-# unless it's something special (ie not a .c file).
-#
-
-.S.s:
- $(CPP) $(CFLAGS) $< -o $*.s
-.S.o:
- $(CC) $(CFLAGS) -c $< -o $*.o
-
-all: dec.o
-O_TARGET := dec.o
-O_OBJS := boot.o int-handler.o decstation.o hw-access.o reset.o setup.o
-
-boot.o: boot.S
-
-int-handler.o: int-handler.S
-
-clean:
-
-include $(TOPDIR)/Rules.make
diff --git a/arch/mips/dec/boot.S b/arch/mips/dec/boot.S
deleted file mode 100644
index 587c43623..000000000
--- a/arch/mips/dec/boot.S
+++ /dev/null
@@ -1,92 +0,0 @@
-/*
- * arch/mips/dec/boot.S
- *
- * Copyright (C) 1995, 1996 Paul M. Antoine
- *
- * Written by Ralf Baechle and Andreas Busse, modified for DECStation
- * support by Paul Antoine.
- *
- * NOTE: There are references to R4X00 code in here, because there is an
- * upgrade module for Personal DECStations with such a CPU!
- */
-#include <asm/asm.h>
-#include <asm/regdef.h>
-#include <asm/fpregdef.h>
-#include <asm/mipsconfig.h>
-#include <asm/mipsregs.h>
-#include <asm/stackframe.h>
-#include <asm/bootinfo.h>
-
-/*
- * dec_entry: Called by the boot PROM loader to do DECStation setup, prior
- * to calling dec_setup() to fill in the boot_info structure.
- *
- * This code should also go in the boot loader for loading off
- * floppy and HD... in addition to the tags code in dec_setup().
- *
- * FIXME: arrange for this code only to be linked in when building a
- * kernel image to be booted via tftp from the boot prom??
- */
- .text
- .globl dec_entry
-dec_entry:
- /* Save the address of the REX call vector for later
- * use in printing debug messages.
- */
- sw a3,pmax_rex_base
- sw a2,rex_prom_magic
- la a0,dec_signon
- jal pmax_printf
- nop
-
- /* Now set up the bootinfo with things that
- * should be loaded by the boot loader, except that
- * for the moment we're booting using tftp.
- */
- jal dec_setup
- nop
-/*
- * Now we need to move exception vector handler routines that appear
- * in head.S down to the right addresses, 'cos the DECStation loads
- * kernels at 0x80030000... <sigh>
- */
-
-/*
- * First move the TLB refill code down to offset 0x000, at addr 0x80000000
- */
- la t0,except_vec0 # begining of exception code
- la t1,except_vec1 # end of exception code
- la t2,0x80000000 # where the code should live
- lw t3,(t0) # get first word
-1: sw t3,(t2) # put it where it should go
- addiu t0,4 # increment both pointers
- addiu t2,4
- lw t3,(t0) # will be in the delay slot
- bne t0,t1,1b
-/*
- * Now move the General Exception code down to offset 0x080 at 0x80000000
- */
- la t0,except_vec3 # begining of general exception code
- la t1,end_except # end of general exception code
- la t2,0x80000080 # where the code should live
- lw t3,(t0) # get first word
-1: sw t3,(t2)
- addiu t0,4
- addiu t2,4
- lw t3,(t0)
- bne t0,t1,1b
-
- la a0,dec_launch # say where we are going
- jal pmax_printf
- nop
-
- la t0,mach_mem_upper # get upper memory bound
- lw a0,(t0)
- j kernel_entry
- nop
-
- .data
- .align 2
-dec_signon: .ascii "\n\nLinux/MIPS DECStation Boot\n";
- .asciiz "Copyright (C) Paul M. Antoine 1995, 1996 and others, 1994, 1995, 1996\n\n";
-dec_launch: .asciiz "Setup complete, launching kernel...\n";
diff --git a/arch/mips/dec/decstation.S b/arch/mips/dec/decstation.S
deleted file mode 100644
index ebc618a4c..000000000
--- a/arch/mips/dec/decstation.S
+++ /dev/null
@@ -1,364 +0,0 @@
-/*
- * arch/mips/kernel/decstation.S
- *
- * Copyright (C) 1995, 1996 Paul M. Antoine
- *
- * Written by Ralf Baechle and Andreas Busse, modified for DECStation
- * support by Paul Antoine.
- *
- * NOTE: There are references to R4X00 code in here, because I believe
- * that there is an upgrade module for Personal DECStations with
- * such CPU's!
- *
- * FIXME: still plenty to do in this file, as much of the code towards
- * the end hasn't been modified to suit the DECStation's interrupts.
- * (Paul, you need to fix this file to comply with NAPS. Won't be
- * too hard - Ralf)
- *
- * $Id: decstation.S,v 1.3 1997/09/20 19:20:06 root Exp $
- */
-#include <asm/asm.h>
-#include <asm/mipsconfig.h>
-#include <asm/mipsregs.h>
-#include <asm/regdef.h>
-#include <asm/decstation.h>
-#include <asm/stackframe.h>
-#include <asm/bootinfo.h>
-
-/*
- * dec_entry: Called at boot in head.S to do DECStation setup, and to
- * fill in the boot_info structure.
- */
- .text
- .globl dec_entry
-dec_entry:
- /* Save the address of the REX call vector for later
- * use in printing debug messages.
- */
- sw a3,pmax_rex_base
- la a0,dec_signon
- jal pmax_printf
- nop
- /* Now set up the bootinfo structure with things that
- * should be loaded by the boot loader, except that
- * for the moment we're booting using tftp.
- */
- la t0,boot_info
- li t1,0x40 # 64 TLB entries
-/*
- * FIXME: Ideally, all DEC workstations should be supported, so here we
- * should put some clevernesses to determine machine type and CPU
- * type. Needs a hierarchy of DEC machine types. Perhaps Machine
- * AND Model fields in bootinfo structure?
- */
- sw t1,OFFSET_BOOTINFO_TLB_ENTRIES(t0)
- li t1,MACH_DECSTATION # Machine type
- sw t1,(t0)
- li t1,CPU_R3000A # CPU type
- sw t1,OFFSET_BOOTINFO_CPUTYPE(t0)
-/*
- * FIXME: the following should find the memory size from the boot PROM
- */
- li t1,0x80000000 # Lower memory bound
- sw t1,OFFSET_BOOTINFO_MEMLOWER(t0)
- li t1,0x88000000 # Upper memory bound (8MB)
- sw t1,OFFSET_BOOTINFO_MEMUPPER(t0)
-/*
- * FIXME: the following should determine the cache size a la the method
- * used in MACH. For now we just guess - PMA.
- */
- li t1,0x100000 # 64K icache
- sw t1,OFFSET_BOOTINFO_ICACHE_SIZE(t0)
- li t1,0x100000 # 64K dcache
- sw t1,OFFSET_BOOTINFO_DCACHE_SIZE(t0)
-
-/*
- * FIXME: template for other bootinfo fields that probably need filling in...
- *
- li t1,0x80000000
- sw t1,OFFSET_BOOTINFO_(t0)
-*/
-
-/*
- * Now we need to move exception vector handler routines that appear
- * in head.S down to the right addresses, 'cos the DECStation loads
- * kernels at 0x80030000... <sigh>
- */
-
-/*
- * First move the TLB refill code down to offset 0x000, at addr 0x80000000
- */
- la t0,except_vec0 # begining of TLB exception code
- la t1,except_vec1 # end of TLB exception code
- la t2,0x80000000 # where the code should live
- lw t3,(t0) # get first word
-1: sw t3,(t2) # put it where it should go
- addiu t0,4 # increment both pointers
- addiu t2,4
- lw t3,(t0) # will be in the delay slot
- bne t0,t1,1b
-
-/*
- * Now move the General Exception code down to offset 0x080 at 0x80000000
- */
- la t0,except_vec3 # begining of general exception code
- la t1,kernel_entry # end of general exception code
- la t2,0x80000080 # where the code should live
- lw t3,(t0) # get first word
-1: sw t3,(t2)
- addiu t0,4
- addiu t2,4
- lw t3,(t0)
- bne t0,t1,1b
-
-/*
- * FIXME: Don't forget to set the gp regster... why do I need this?
- */
- la gp,_gp
- la a0,dec_launch # say where we are going
- jal pmax_printf
- nop
- j kernel_entry
- nop
-
- .data
- .align 2
-dec_signon: .ascii "\n\nLinux/MIPS DECStation Boot\n";
- .asciiz "Copyright (C) Paul M. Antoine 1995, 1996 and others, 1994, 1995, 1996\n\n";
-dec_launch: .asciiz "Launching kernel...\n";
- .text
- .set noreorder
-/*
- * decstation_handle_int: Interrupt handler for Personal DECStation 5000/2x
- *
- * FIXME: this is *extremely* experimental, though it is probably o.k. for
- * most DECStation models.
- */
- NESTED(decstation_handle_int, FR_SIZE, ra)
- .set noat
- SAVE_ALL
- REG_S sp,FR_ORIG_REG2(sp)
- CLI
- .set at
-
- /*
- * Get pending interrupts
- */
- mfc0 t0,CP0_CAUSE # get pending interrupts
- mfc0 t1,CP0_STATUS # get enabled interrupts
- and t0,t1 # isolate allowed ones
- andi t0,0xff00 # isolate pending bits
-/*
- * FIXME: The following branch was:
- * beqz t0,spurious_interrupt
- *
- * ...but the wonders of ecoff cause the gas assembler (ver 2.5.1 )
- * to complain:
- *
- * "Can not represent relocation in this object file format"...
- *
- * hence this hack to branch foward a bit, and then jump <sigh>
- * Perhaps a later version of gas will cope? - Paul
- * (No, this is impossible in COFF as well as in ELF. - Ralf)
- */
- beqz t0,3f;
- sll t0,16 # delay slot
-
- /*
- * Find irq with highest priority
- * FIXME: This is slow
- */
- la t1,ll_vectors
-1: bltz t0,2f # found pending irq
- sll t0,1
- b 1b
- subu t1,PTRSIZE # delay slot
-
- /*
- * Do the low-level stuff
- */
- .set reorder
-2: LOAD_L t0,(t1)
- jr t0
- .set noreorder
- END(decstation_handle_int)
-
-/*
- * FIXME: The hack mentioned above.
- */
-3: j spurious_interrupt
- nop
-
-/*
- * FIXME: the rest of this is pretty suspect, as it's straight from
- * jazz.S... and I really haven't altered it at all - Paul
- */
-
-/*
- * Used for keyboard driver's fake_keyboard_interrupt()
- * (Paul, even for i386 this is no longer being used -- Ralf)
- */
-ll_sw0: li s1,~IE_SW0
- mfc0 t0,CP0_CAUSE
- and t0,s1
- mtc0 t0,CP0_CAUSE
- PRINT("sw0 received...\n")
- li t1,1
- b call_real
- li t3,PTRSIZE # delay slot, re-map to irq level 1
-
-ll_sw1: li s1,~IE_SW1
- PANIC("Unimplemented sw1 handler")
-
-loc_no_irq: PANIC("Unimplemented loc_no_irq handler")
-loc_sound: PANIC("Unimplemented loc_sound handler")
-loc_video: PANIC("Unimplemented loc_video handler")
-loc_scsi: PANIC("Unimplemented loc_scsi handler")
-
-/*
- * Ethernet interrupt, remapped to level 15
- * NOTE: Due to a bug somewhere in the kernel I was not able
- * to figure out, the PRINT() is necessary. Without this,
- * I get a "gfp called nonatomically from interrupt 00000000".
- * Only god knows why... Tell me if you find the reason!
- * (You were fouled by the caches and this is the wrong file for this
- * comment - Ralf)
- * Andy, 6/16/95
- */
-loc_ethernet: PANIC("Unimplemented loc_ethernet")
-
-/*
- * Keyboard interrupt, remapped to level 1
- */
-loc_keyboard: PANIC("Unimplemented loc_keyboard")
-
-loc_mouse: PANIC("Unimplemented loc_mouse handler")
-
-/*
- * Serial port 1 IRQ, remapped to level 3
- */
-loc_serial1: PANIC("Unimplemented loc_serial handler")
-
-/*
- * Serial port 2 IRQ, remapped to level 4
- */
-loc_serial2: PANIC("Unimplemented loc_serial handler")
-
-/*
- * Parallel port IRQ, remapped to level 5
- */
-loc_parallel: PANIC("Unimplemented loc_parallel handler")
-
-/*
- * Floppy IRQ, remapped to level 6
- */
-loc_floppy: PANIC("Unimplemented loc_floppy handler")
-
-/*
- * Now call the real handler
- */
-loc_call: /*
- * Temporarily disable interrupt source
- */
-/* lhu t2,JAZZ_IO_IRQ_ENABLE
-*/
- and t2,s1 # delay slot
-/* sh t2,JAZZ_IO_IRQ_ENABLE */
- nor s1,zero,s1
- jal do_IRQ # call IRQ handler
- move a1,sp
-
- /*
- * Reenable interrupt
- */
-/* lhu t2,JAZZ_IO_IRQ_ENABLE */
- or t2,s1
-/* sh t2,JAZZ_IO_IRQ_ENABLE */
-
- j ret_from_irq
- nop # delay slot
-
-ll_tc3: PANIC("Unimplemented tc3 interrupt handler")
-
-ll_fpu: PANIC("Unimplemented fpu interrupt handler")
-
-ll_io_error: PANIC("Unimplemented I/O write timeout interrupt handler")
-
-ll_rtc: PANIC("Unimplemented RTC interrupt handler")
-
-/*
- * Timer IRQ
- * We remap the timer irq to be more similar to a IBM compatible
- */
-ll_timer: PANIC("Timer interrupt!");
-/*
- * CPU count/compare IRQ (unused)
- */
-ll_reset: li a0,0
- jal pmax_halt
- li a1,0 # delay slot
-
-/*
- * Now call the real handler
- */
-call_real: /*
- * temporarily disable interrupt
- */
- mfc0 t2,CP0_STATUS
- and t2,s1
- mtc0 t2,CP0_STATUS
- nor s1,zero,s1
- jal do_IRQ
- move a1,sp
-
- /*
- * reenable interrupt
- */
- mfc0 t2,CP0_STATUS
- or t2,s1
- mtc0 t2,CP0_STATUS
-
- j ret_from_irq
- nop # delay slot
-
-/*
- * Just for debugging... load a0 with address of the point inside the
- * framebuffer at which you want to draw a line of 16x32 pixels.
- * Maxine's framebuffer starts at 0xaa000000.
- */
- .set reorder
- LEAF(drawline)
- li t1,0xffffffff # set all pixels on
- li t2,0x10 # we will write 16 words
-1: sw t1,(a0) # write the first word
- addiu a0,a0,4 # move our framebuffer pointer
- addiu t2,t2,-1 # one less to do
- bnez t2,1b # finished?
- jr ra
- END(drawline)
-
-/*
- * FIXME: I have begun to alter this table to reflect Personal DECStation
- * (i.e. Maxine) interrupts... Paul.
- */
- .data
- PTR ll_sw0 # SW0
- PTR ll_sw1 # SW1
- PTR ll_timer # Periodic interrupt
- PTR ll_rtc # RTC periodic interrupt
- PTR ll_io_error # Timeout on I/O writes
- PTR ll_tc3 # TC slot 3, motherboard
- PTR ll_reset # Halt keycode (CTRL+ALT+ENTER)
-ll_vectors: PTR ll_fpu # FPU
-
-local_vector: PTR loc_no_irq
- PTR loc_parallel
- PTR loc_floppy
- PTR loc_sound
- PTR loc_video
- PTR loc_ethernet
- PTR loc_scsi
- PTR loc_keyboard
- PTR loc_mouse
- PTR loc_serial1
- PTR loc_serial2
diff --git a/arch/mips/dec/decstation.c b/arch/mips/dec/decstation.c
deleted file mode 100644
index ae64c32f5..000000000
--- a/arch/mips/dec/decstation.c
+++ /dev/null
@@ -1,200 +0,0 @@
-/*
- * arch/mips/dec/decstation.c
- *
- * Copyright (C) 1996 Paul M. Antoine
- *
- * Written by Paul Antoine.
- *
- * FIXME: still plenty to do in this file, as we don't yet fully fill
- * the boot info structure with DEC-specific tags. Also still
- * too specific to the Person Decstattion 5000/2x!!
- */
-
-#include <asm/dec/decstation.h>
-#include <asm/dec/maxine.h> /* FIXME: what about other decstations? */
-#include <asm/bootinfo.h>
-
-/*
- * dec_setup: Called at boot from dec_entry() in boot.S to do
- * DECStation-specific setup, and to fill in the kernel argument
- * tags.
- *
- * FIXME: I'm not sure all DEC workstations are correctly supported. This
- * code may not need to be here when booting off floppy or HD??
- */
-
-unsigned long mach_mem_upper = 0;
-unsigned long mach_mem_lower = 0;
-unsigned long mips_dcache_size = 0;
-unsigned long mips_icache_size = 0;
-unsigned long rex_prom_magic; /* from boot.S */
-unsigned long dec_get_memory_size(void);
-
-void dec_setup(void)
-{
- unsigned long int mem_mask = 0;
- unsigned long tag_data_dummy, dec_sysid;
- unsigned char dec_cpunum, dec_systype, dec_firmrev, dec_etc;
- extern const char *linux_banner;
-
- pmax_printf("%s\n", linux_banner);
- /* First we need the memory upper bound before we can add tag entries... */
- mach_mem_lower = 0x80000000L;
- mach_mem_upper = mach_mem_lower + dec_get_memory_size();
-
- /* First tag is always memory upper limit, right Stoned?? */
- (void)bi_TagAdd(tag_memupper, ULONGSIZE, &mach_mem_upper);
-
- /* We're obviously one of the DEC machines */
- tag_data_dummy = MACH_GROUP_DEC;
- (void)bi_TagAdd(tag_machgroup, ULONGSIZE, &tag_data_dummy);
-
- /* Now let's try to figure out what type of DECStation we are */
- pmax_printf("System id is: ");
- if ((dec_sysid = pmax_getsysid()) != 0)
- pmax_printf("%x\n", dec_sysid);
- else
- pmax_printf("unknown\n");
-
- dec_cpunum = (dec_sysid & 0xff000000) >> 24;
- dec_systype = (dec_sysid & 0xff0000) >> 16;
- dec_firmrev = (dec_sysid & 0xff00) >> 8;
- dec_etc = dec_sysid & 0xff;
-
- /*
- * FIXME: for now use the PROM to determine the CPU type - should
- * probably just get the CPU to tell us.
- */
- pmax_printf("System has an ");
- switch(dec_cpunum)
- {
- case 0x82:
- {
- pmax_printf("R3000 CPU\n");
- tag_data_dummy = CPU_R3000A;
- break;
- }
- case 0x84:
- {
- pmax_printf("R4000 CPU\n");
- /* FIXME: assume a plain R4000PC for now */
- tag_data_dummy = CPU_R4000PC;
- break;
- }
- default:
- {
- pmax_printf("unknown CPU, code is %x\n", dec_cpunum);
- /* FIXME: assume an R2000 for now */
- tag_data_dummy = CPU_R2000;
- break;
- }
- }
- /* Add the CPU type */
- (void)bi_TagAdd(tag_cputype, ULONGSIZE, &tag_data_dummy);
-
- pmax_printf("System has firmware type: ");
- if (dec_firmrev == 2)
- pmax_printf("TCF0\n");
- else
- pmax_printf("TCF1\n");
-
- pmax_printf("This DECStation is a: ");
- switch(dec_systype) {
- case 1: /* DS2100/3100 Pmax */
- pmax_printf("DS2100/3100\n");
- tag_data_dummy = MACH_DECSTATION;
- break;
- case 2: /* DS5000 3max */
- pmax_printf("DS5000\n");
- tag_data_dummy = MACH_DECSTATION;
- break;
- case 3: /* DS5000/100 3min */
- pmax_printf("DS5000/1x0\n");
- tag_data_dummy = MACH_DECSTATION;
- break;
- case 7: /* Personal DS5000/2x */
- pmax_printf("Personal DS5000/2x\n");
- tag_data_dummy = MACH_DECSTATION;
- break;
- default:
- pmax_printf("unknown, id is: %x\n", dec_systype);
- tag_data_dummy = MACH_UNKNOWN;
- break;
- }
-
- /* Add the machine type */
- (void)bi_TagAdd(tag_machtype, ULONGSIZE, &tag_data_dummy);
-
- /* Add the number of tlb entries */
- tag_data_dummy = 64;
- (void)bi_TagAdd(tag_tlb_entries, ULONGSIZE, &tag_data_dummy);
-
- /*
- * Add the instruction cache size
- * FIXME: should determine this somehow
- */
- tag_data_dummy = 0x100000; /* set it to 64K for now */
- (void)bi_TagAdd(tag_icache_size, ULONGSIZE, &tag_data_dummy);
- mips_icache_size = tag_data_dummy;
-
- /*
- * Add the data cache size
- * FIXME: should determine this somehow
- */
- tag_data_dummy = 0x100000; /* set it to 64K for now */
- (void)bi_TagAdd(tag_dcache_size, ULONGSIZE, &tag_data_dummy);
- mips_dcache_size = tag_data_dummy;
-
- /* FIXME: should determine vram_base properly */
- tag_data_dummy = 0xa8000000;
- (void)bi_TagAdd(tag_vram_base, ULONGSIZE, &tag_data_dummy);
-
- /* FIXME: dummy drive info tag */
- tag_data_dummy = 0;
- (void)bi_TagAdd(tag_drive_info, ULONGSIZE, &tag_data_dummy);
-
- /* FIXME: do we need a dummy tag at the end? */
- tag_data_dummy = 0;
- (void)bi_TagAdd(tag_dummy, 0, &tag_data_dummy);
-
- pmax_printf("Added tags\n");
-} /* dec_setup */
-
-unsigned long dec_get_memory_size()
-{
- int i, bitmap_size;
- unsigned long mem_size = 0;
- struct pmax_bitmap {
- int pagesize;
- unsigned char bitmap[64*1024*1024 - 4];
- } *bm;
-
- /* some free 64k */
- bm = (struct pmax_bitmap *)0x8002f000;
- bitmap_size = pmax_getbitmap(bm);
-
- pmax_printf("Page size is: %x\n", bm->pagesize);
- pmax_printf("Bitmap size is: %d bytes\n", bitmap_size);
-
- for (i = 0; i < bitmap_size; i++)
- {
- /* FIXME: very simplistically only add full sets of pages */
- if (bm->bitmap[i] == 0xff)
- mem_size += (8 * bm->pagesize);
- }
- pmax_printf("Main memory size is: %d KB\n", (mem_size / 1024));
- return(mem_size);
-} /* dec_get_memory_size */
-
-unsigned char maxine_rtc_read_data(unsigned long addr)
-{
- char *rtc = (char *)(PMAX_RTC_BASE);
- return(rtc[addr * 4]);
-} /* maxine_rtc_read_data */
-
-void maxine_rtc_write_data(unsigned char data, unsigned long addr)
-{
- char *rtc = (char *)(PMAX_RTC_BASE);
- rtc[addr * 4] = data;
-} /* maxine_rtc_read_data */
-
diff --git a/arch/mips/dec/hw-access.c b/arch/mips/dec/hw-access.c
deleted file mode 100644
index 31a8aabef..000000000
--- a/arch/mips/dec/hw-access.c
+++ /dev/null
@@ -1,26 +0,0 @@
-/*
- * DECstation specific hardware access code.
- *
- * This file is subject to the terms and conditions of the GNU General Public
- * License. See the file "COPYING" in the main directory of this archive
- * for more details.
- *
- * Copyright (C) 1996 by Paul Antoine
- */
-#include <linux/linkage.h>
-#include <linux/types.h>
-#include <asm/mc146818rtc.h>
-#include <asm/vector.h>
-
-asmlinkage void decstation_handle_int(void);
-extern unsigned char maxine_rtc_read_data(unsigned long);
-extern void maxine_rtc_write_data(unsigned char, unsigned long);
-
-/*
- * FIXME: Don't have any of the goo required to access fd etc.
- */
-struct feature decstation_feature = {
- 0,0,0,0,0,0,0,0,0,0,0,0,0,
- maxine_rtc_read_data,
- maxine_rtc_write_data
-};
diff --git a/arch/mips/dec/int-handler.S b/arch/mips/dec/int-handler.S
deleted file mode 100644
index 87348b5b1..000000000
--- a/arch/mips/dec/int-handler.S
+++ /dev/null
@@ -1,246 +0,0 @@
-/*
- * arch/mips/dec/int-handler.S
- *
- * Copyright (C) 1995, 1996 Paul M. Antoine
- *
- * Written by Ralf Baechle and Andreas Busse, modified for DECStation
- * support by Paul Antoine.
- *
- * NOTE: There are references to R4X00 code in here, because there is an
- * upgrade module for Personal DECStations with such a CPU!
- *
- * FIXME: still plenty to do in this file, as much of the code hasn't been
- * modified to suit the DECStation's interrupts.
- *
- * $Id: int-handler.S,v 1.3 1997/09/20 19:20:07 root Exp $
- */
-#include <asm/asm.h>
-#include <asm/regdef.h>
-#include <asm/fpregdef.h>
-#include <asm/mipsconfig.h>
-#include <asm/mipsregs.h>
-#include <asm/stackframe.h>
-#include <asm/bootinfo.h>
-
- .text
- .set noreorder
-/*
- * decstation_handle_int: Interrupt handler for Personal DECStation 5000/2x
- *
- * FIXME: this is *extremely* experimental, though it is probably o.k. for
- * most DECStation models.
- */
- NESTED(decstation_handle_int, FR_SIZE, ra)
- .set noat
- SAVE_ALL
- CLI
- .set at
-
- /*
- * Get pending interrupts
- */
- mfc0 t0,CP0_CAUSE # get pending interrupts
- mfc0 t1,CP0_STATUS # get enabled interrupts
- and t0,t1 # isolate allowed ones
- andi t0,0xff00 # isolate pending bits
-/*
- * FIXME: The following branch was:
- * beqz t0,spurious_interrupt
- *
- * ...but the wonders of ecoff cause the gas assembler (ver 2.5.1 )
- * to complain:
- *
- * "Can not represent relocation in this object file format"...
- *
- * hence this hack to branch foward a bit, and then jump <sigh>
- * Perhaps a later version of gas will cope? - Paul
- */
- beqz t0,3f;
- sll t0,16 # delay slot
-
- /*
- * Find irq with highest priority
- * FIXME: This is slow
- */
- la t1,ll_vectors
-1: bltz t0,2f # found pending irq
- sll t0,1
- b 1b
- subu t1,PTRSIZE # delay slot
-
- /*
- * Do the low-level stuff
- */
-2: lw t0,(t1)
- jr t0
- nop # delay slot
- END(decstation_handle_int)
-
-/*
- * FIXME: The hack mentioned above.
- */
-3: j spurious_interrupt
- nop
-
-/*
- * FIXME: the rest of this is pretty suspect, as it's straight from
- * jazz.S... and I really haven't altered it at all - Paul
- */
-
-/*
- * Used for keyboard driver's fake_keyboard_interrupt()
- * (Paul, even for i386 this is no longer being used -- Ralf)
- */
-ll_sw0: li s1,~IE_SW0
- mfc0 t0,CP0_CAUSE
- and t0,s1
- mtc0 t0,CP0_CAUSE
- PRINT("sw0 received...\n")
- li t1,1
- b call_real
- nop
-
-ll_sw1: li s1,~IE_SW1
- PANIC("Unimplemented sw1 handler")
-
-loc_no_irq: PANIC("Unimplemented loc_no_irq handler")
-loc_sound: PANIC("Unimplemented loc_sound handler")
-loc_video: PANIC("Unimplemented loc_video handler")
-loc_scsi: PANIC("Unimplemented loc_scsi handler")
-
-loc_ethernet: PANIC("Unimplemented loc_ethernet")
-
-/*
- * Keyboard interrupt, remapped to level 1
- */
-loc_keyboard: PANIC("Unimplemented loc_keyboard")
-
-loc_mouse: PANIC("Unimplemented loc_mouse handler")
-
-/*
- * Serial port 1 IRQ, remapped to level 3
- */
-loc_serial1: PANIC("Unimplemented loc_serial handler")
-
-/*
- * Serial port 2 IRQ, remapped to level 4
- */
-loc_serial2: PANIC("Unimplemented loc_serial handler")
-
-/*
- * Parallel port IRQ, remapped to level 5
- */
-loc_parallel: PANIC("Unimplemented loc_parallel handler")
-
-/*
- * Floppy IRQ, remapped to level 6
- */
-loc_floppy: PANIC("Unimplemented loc_floppy handler")
-
-/*
- * Now call the real handler
- */
-loc_call: /*
- * Temporarily disable interrupt source
- */
-/* lhu t2,JAZZ_IO_IRQ_ENABLE
-*/
- and t2,s1
-/* sh t2,JAZZ_IO_IRQ_ENABLE */
- jal do_IRQ # call IRQ handler
- nor s1,zero,s1
-
- /*
- * Reenable interrupt
- */
-/* lhu t2,JAZZ_IO_IRQ_ENABLE */
- or t2,s1
-/* sh t2,JAZZ_IO_IRQ_ENABLE */
-
- j ret_from_irq
- nop # delay slot
-
-ll_tc3: PANIC("Unimplemented tc3 interrupt handler")
-
-ll_fpu: PANIC("Unimplemented fpu interrupt handler")
-
-ll_io_error: PANIC("Unimplemented I/O write timeout interrupt handler")
-
-ll_rtc: PANIC("Unimplemented RTC interrupt handler")
-
-/*
- * Timer IRQ
- * We remap the timer irq to be more similar to a IBM compatible
- */
-ll_timer: PANIC("Timer interrupt!");
-/*
- * CPU count/compare IRQ (unused)
- */
-ll_reset: li a0,0
- jal pmax_halt
- li a1,0 # delay slot
-
-/*
- * Now call the real handler
- */
-call_real: /*
- * temporarily disable interrupt
- */
- mfc0 t2,CP0_STATUS
- and t2,s1
-
- mtc0 t2,CP0_STATUS
- jal do_IRQ
- nor s1,zero,s1
-
- /*
- * reenable interrupt
- */
- mfc0 t2,CP0_STATUS
- or t2,s1
- mtc0 t2,CP0_STATUS
-
- j ret_from_irq
- nop # delay slot
-
-/*
- * Just for debugging... load a0 with address of the point inside the
- * framebuffer at which you want to draw a line of 16x32 pixels.
- * Maxine's framebuffer starts at 0xaa000000.
- */
- .set reorder
- LEAF(drawline)
- li t1,0xffffffff # set all pixels on
- li t2,0x10 # we will write 16 words
-1: sw t1,(a0) # write the first word
- addiu a0,a0,4 # move our framebuffer pointer
- addiu t2,t2,-1 # one less to do
- bnez t2,1b # finished?
- jr ra
- END(drawline)
-
-/*
- * FIXME: I have begun to alter this table to reflect Personal DECStation
- * (i.e. Maxine) interrupts... Paul.
- */
- .data
- PTR ll_sw0 # SW0
- PTR ll_sw1 # SW1
- PTR ll_timer # Periodic interrupt
- PTR ll_rtc # RTC periodic interrupt
- PTR ll_io_error # Timeout on I/O writes
- PTR ll_tc3 # TC slot 3, motherboard
- PTR ll_reset # Halt keycode (CTRL+ALT+ENTER)
-ll_vectors: PTR ll_fpu # FPU
-
-local_vector: PTR loc_no_irq
- PTR loc_parallel
- PTR loc_floppy
- PTR loc_sound
- PTR loc_video
- PTR loc_ethernet
- PTR loc_scsi
- PTR loc_keyboard
- PTR loc_mouse
- PTR loc_serial1
- PTR loc_serial2
diff --git a/arch/mips/dec/ld.script b/arch/mips/dec/ld.script
deleted file mode 100644
index f0cf33fc4..000000000
--- a/arch/mips/dec/ld.script
+++ /dev/null
@@ -1,47 +0,0 @@
-OUTPUT_FORMAT("ecoff-littlemips")
-OUTPUT_ARCH(mips)
-ENTRY(dec_entry)
-SECTIONS
-{
- /* This is probably a little simplistic, and is based on work by
- * Chris Fraser of Softway Pty Ltd as used in his port of Vsta to
- * the DECStation - Paul M. Antoine 21/1/96.
- */
- . = 0x80030000;
- .text :
- {
- *(.text)
- . = ALIGN(0x10);
- _etext = .;
- __etext = .;
- }
- .lit8 : {
- *(.lit8)
- }
- .lit4 : {
- *(.lit4)
- }
- . = ALIGN(0x1000);
- .data :
- {
- *(.data .rdata .rodata)
- _edata = .;
- __edata = .;
- }
- __bss_start = ALIGN(16) + 0x8000;
- .sbss :
- {
- *(.sbss)
- *(.scommon)
- }
- .bss :
- {
- *(.bss)
- *(COMMON)
- _end = ALIGN(4) ;
- __end = ALIGN(4) ;
- }
- .reginfo : {
- *(.reginfo)
- }
-}
diff --git a/arch/mips/dec/reset.c b/arch/mips/dec/reset.c
deleted file mode 100644
index 4d61d4048..000000000
--- a/arch/mips/dec/reset.c
+++ /dev/null
@@ -1,28 +0,0 @@
-/*
- * linux/arch/mips/dec/process.c
- *
- * Reset a DECstation.
- */
-#include <linux/kernel.h>
-#include <asm/reboot.h>
-
-void dec_machine_restart(char *command)
-{
- printk("Implement dec_machine_restart().\n");
- printk("Press reset to continue.\n");
- while(1);
-}
-
-void dec_machine_halt(void)
-{
- printk("Implement dec_machine_halt().\n");
- printk("Press reset to continue.\n");
- while(1);
-}
-
-void dec_machine_power_off(void)
-{
- printk("Implement dec_machine_power_off().\n");
- printk("Press reset to continue.\n");
- while(1);
-}
diff --git a/arch/mips/dec/setup.c b/arch/mips/dec/setup.c
deleted file mode 100644
index b748371dc..000000000
--- a/arch/mips/dec/setup.c
+++ /dev/null
@@ -1,50 +0,0 @@
-/*
- * Setup pointers to hardware dependand routines.
- *
- * This file is subject to the terms and conditions of the GNU General Public
- * License. See the file "COPYING" in the main directory of this archive
- * for more details.
- *
- * Copyright (C) 1996 by Ralf Baechle
- */
-#include <asm/ptrace.h>
-#include <linux/sched.h>
-#include <linux/interrupt.h>
-#include <linux/timex.h>
-#include <asm/io.h>
-#include <asm/irq.h>
-#include <asm/reboot.h>
-#include <asm/vector.h>
-
-extern struct feature decstation_feature;
-
-static void
-dec_irq_setup(void)
-{
- /* FIXME: should set up the clock as per above? */
- pmax_printf("Please write the IRQ setup code for the DECStation!\n");
-}
-
-void (*board_time_init)(struct irqaction *irq);
-
-static void dec_time_init(struct irqaction *irq)
-{
- pmax_printf("Please write the time init code for the DECStation!\n");
-}
-
-extern void dec_machine_restart(char *command);
-extern void dec_machine_halt(void);
-extern void dec_machine_power_off(void).
-
-void
-decstation_setup(void)
-{
- irq_setup = dec_irq_setup;
- board_time_init = dec_time_init;
- /* FIXME: Setup fd_cacheflush */
- feature = &decstation_feature; /* FIXME: Will go away */
-
- _machine_restart = dec_machine_restart;
- _machine_halt = dec_machine_halt;
- _machine_power_off = dec_machine_power_off;
-}