You can subscribe to this list here.
| 2000 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
(6) |
Sep
(2) |
Oct
(43) |
Nov
(4) |
Dec
(12) |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 2001 |
Jan
(78) |
Feb
(97) |
Mar
(29) |
Apr
(2) |
May
(22) |
Jun
(38) |
Jul
(11) |
Aug
(27) |
Sep
(40) |
Oct
(2) |
Nov
(17) |
Dec
(8) |
| 2002 |
Jan
|
Feb
(2) |
Mar
(1) |
Apr
(480) |
May
(456) |
Jun
(12) |
Jul
|
Aug
(1) |
Sep
|
Oct
(18) |
Nov
(3) |
Dec
(6) |
| 2003 |
Jan
|
Feb
(18) |
Mar
(1) |
Apr
|
May
(6) |
Jun
(147) |
Jul
(7) |
Aug
(3) |
Sep
(235) |
Oct
(10) |
Nov
(2) |
Dec
(1) |
| 2004 |
Jan
|
Feb
|
Mar
|
Apr
|
May
(1) |
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
|
From: Kenn H. <ke...@us...> - 2001-01-26 00:26:38
|
Update of /cvsroot/linux-vax/kernel-2.4/drivers In directory usw-pr-cvs1:/tmp/cvs-serv25353/drivers Modified Files: Makefile Log Message: Bring forward all 2.2 work from before new year. This should give us all a (somewhat) bootable kernel. Index: Makefile =================================================================== RCS file: /cvsroot/linux-vax/kernel-2.4/drivers/Makefile,v retrieving revision 1.1.1.1 retrieving revision 1.2 diff -u -r1.1.1.1 -r1.2 --- Makefile 2001/01/14 17:17:55 1.1.1.1 +++ Makefile 2001/01/26 00:27:00 1.2 @@ -37,6 +37,7 @@ subdir-$(CONFIG_ISDN) += isdn subdir-$(CONFIG_ATM) += atm subdir-$(CONFIG_FC4) += fc4 +subdir-$(CONFIG_VSABUS) += vsbus # CONFIG_HAMRADIO can be set without CONFIG_NETDEVICE being set -- ch subdir-$(CONFIG_HAMRADIO) += net/hamradio |
|
From: Kenn H. <ke...@us...> - 2001-01-26 00:26:38
|
Update of /cvsroot/linux-vax/kernel-2.4/arch/vax/mm
In directory usw-pr-cvs1:/tmp/cvs-serv25353/arch/vax/mm
Modified Files:
init.c ioremap.c pgtable.c
Log Message:
Bring forward all 2.2 work from before new year. This should give us
all a (somewhat) bootable kernel.
Index: init.c
===================================================================
RCS file: /cvsroot/linux-vax/kernel-2.4/arch/vax/mm/init.c,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- init.c 2001/01/17 16:13:57 1.1
+++ init.c 2001/01/26 00:27:00 1.2
@@ -1,18 +1,31 @@
-/* vax/mm/init.c
+/* $Id$
* initialise the VM system.
* Copyright atp Nov 1998
* GNU GPL
*/
+#include <linux/kernel.h>
#include <linux/mm.h>
#include <linux/swap.h>
+#include <linux/bootmem.h>
+#include <linux/init.h>
-#include <asm/init.h>
-#include <asm/page.h>
-#include <asm/bitops.h>
+#include <asm/pgtable.h>
+#include <asm/rpb.h>
-extern unsigned long free_area_init(unsigned long, unsigned long);
+static unsigned long totalram_pages;
+static unsigned long totalhigh_pages;
+unsigned long empty_zero_page[PAGE_SIZE/sizeof(unsigned long)] __attribute__ ((__aligned__ (PAGE_SIZE)));
+
+
+/* This is task 0's PGD structure. Entries 4 and 5 will be filled with
+ the system page table base and size by head.S. The remaining
+ entries (0 to 3) will be left at zero as there is no valid user
+ context in task 0. */
+
+pgd_t swapper_pg_dir[PTRS_PER_PGD];
+
/*
* In other architectures, paging_init sets up the kernel's page tables.
* In Linux/VAX, this is already done by the early boot code, so all we
@@ -20,24 +33,13 @@
*
* The start_mem and end_mem addresses are virtual addresses
*/
-__init unsigned long
-paging_init(unsigned long start_mem, unsigned long end_mem)
+void __init
+paging_init()
{
- unsigned long pfn;
-
- /* initialize mem_map[] */
- start_mem = free_area_init(start_mem, end_mem);
-
- /* free_area_init() has marked all pages as reserved.
- We now unreserve all pages except the stack. The
- pages actually used by the kernel will be reserved
- my mem_init() later. */
-
- for (pfn=MAP_NR(0x80005a00); pfn<MAP_NR(end_mem); pfn++) {
- clear_bit(PG_reserved, &mem_map[pfn].flags);
- }
+ unsigned long zones_size[MAX_NR_ZONES] = { 0, 0, 0};
- return start_mem;
+ zones_size[ZONE_DMA] = max_pfn;
+ free_area_init(zones_size);
}
#if DEBUG_POISON
@@ -64,45 +66,23 @@
#endif
void
-mem_init(unsigned long start_mem, unsigned long end_mem)
+mem_init(void)
{
- unsigned long tmp;
-
- end_mem &= PAGE_MASK;
- max_mapnr = num_physpages = MAP_NR(end_mem);
- high_memory = (void *) end_mem;
- start_mem = PAGE_ALIGN(start_mem);
-
- /*
- * Mark the pages used by the kernel as reserved.
- */
- tmp = 0x80000000; /* Reserve everything below kernel start
- to protect stack */
-
- while (tmp < start_mem) {
- set_bit(PG_reserved, &mem_map[MAP_NR(tmp)].flags);
- tmp += PAGE_SIZE;
+ if (!mem_map) {
+ BUG();
}
- printk("Reserved as far as %08lx\n", tmp);
- printk("Freeing remaining memory\n");
+ max_mapnr = num_physpages = max_pfn;
+ high_memory = (void *) __va(max_pfn * PAGE_SIZE);
- for (tmp = PAGE_OFFSET ; tmp < end_mem ; tmp += PAGE_SIZE) {
- if (PageReserved(mem_map+MAP_NR(tmp)))
- continue;
-
- atomic_set(&mem_map[MAP_NR(tmp)].count, 1);
-#ifdef CONFIG_BLK_DEV_INITRD
- if (initrd_start && tmp >= initrd_start && tmp < initrd_end)
- continue;
-#endif
- kill_page(tmp);
- free_page(tmp);
- }
- printk("Scanned as far as %08lx\n", tmp);
+ /* this will put all low memory onto the freelists */
+ totalram_pages += free_all_bootmem();
+
+ printk("Memory: %luk/%luk available\n",
+ (unsigned long) nr_free_pages() * 2,
+ max_mapnr * 2
+ );
- tmp = nr_free_pages << PAGE_SHIFT;
- printk("Memory: %luk available\n", tmp >> 10);
return;
}
@@ -123,25 +103,14 @@
(&__init_end - &__init_begin) >> 10);
}
-void
-si_meminfo(struct sysinfo *val)
+void si_meminfo(struct sysinfo *val)
{
- int i;
-
- i = max_mapnr;
- val->totalram = 0;
- val->sharedram = 0;
- val->freeram = nr_free_pages << PAGE_SHIFT;
- val->bufferram = buffermem;
- while (i-- > 0) {
- if (PageReserved(mem_map+i))
- continue;
- val->totalram++;
- if (!atomic_read(&mem_map[i].count))
- continue;
- val->sharedram += atomic_read(&mem_map[i].count) - 1;
- }
- val->totalram <<= PAGE_SHIFT;
- val->sharedram <<= PAGE_SHIFT;
- return;
+ val->totalram = totalram_pages;
+ val->sharedram = 0;
+ val->freeram = nr_free_pages();
+ val->bufferram = atomic_read(&buffermem_pages);
+ val->totalhigh = totalhigh_pages;
+ val->freehigh = nr_free_highpages();
+ val->mem_unit = PAGE_SIZE;
+ return;
}
Index: ioremap.c
===================================================================
RCS file: /cvsroot/linux-vax/kernel-2.4/arch/vax/mm/ioremap.c,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- ioremap.c 2001/01/17 16:13:57 1.1
+++ ioremap.c 2001/01/26 00:27:00 1.2
@@ -48,6 +48,7 @@
#include <asm/io.h>
#include <asm/page.h>
#include <asm/pgtable.h>
+#include <asm/pgalloc.h>
/* Defined in head.S */
extern pte_t *iomap_base;
@@ -103,6 +104,7 @@
if ((p - start_pte) != num_ptes) {
/* Unable to find contiguous chunk of IOMAP PTEs */
+ printk("ioremap: cannot find 0x%04x available PTEs\n", num_ptes);
return NULL;
}
Index: pgtable.c
===================================================================
RCS file: /cvsroot/linux-vax/kernel-2.4/arch/vax/mm/pgtable.c,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- pgtable.c 2001/01/17 16:13:57 1.1
+++ pgtable.c 2001/01/26 00:27:00 1.2
@@ -1,39 +1,37 @@
-/* arch/vax/mm/pgtable.c copyright atp 1999 */
-/* handle bits of VAX memory management */
+/*
+ * $Id$
+ *
+ * handle bits of VAX memory management
+ */
-#include <asm/page.h>
-#include <asm/system.h>
-#include <asm/ptrace.h>
+#include <linux/sched.h>
+#include <linux/mm.h>
-#if 0
+#include <asm/pgalloc.h>
+
void set_page_dir(struct task_struct * tsk, pgd_t * pgdir)
{
- /* these are all virtual addresses */
- unsigned int flags;
-
- (tsk)->pcb.p0br = (pgdir)->p0br;
- (tsk)->pcb.p0lr = (pgdir)->p0lr;
- (tsk)->pcb.p1br = (pgdir)->p1br;
- (tsk)->pcb.p1lr = (pgdir)->p1lr;
+ /* P0BR and P1BR are virtual addresses */
+ tsk->thread.pcb.p0br = pgd_val(pgdir[0]);
+ tsk->thread.pcb.p0lr = pgd_val(pgdir[1]);
+ tsk->thread.pcb.p1br = pgd_val(pgdir[2]);
+ tsk->thread.pcb.p1lr = pgd_val(pgdir[3]);
/* now if this is the currently running task, up date the registers */
/* This doesnt sound like a great idea... perhaps setipl(31) would
be a good idea here */
- if ((tsk) == current) {
- __save_flags(flags);
- __mtpr( (tsk)->pcb.p0br, PR_P0BR );
- __mtpr( (tsk)->pcb.p0lr, PR_P0LR );
- __mtpr( (tsk)->pcb.p1br, PR_P1BR );
- __mtpr( (tsk)->pcb.p1lr, PR_P1LR );
- __restore_flags(flags);
+ if (tsk == current) {
+ __mtpr(tsk->thread.pcb.p0br, PR_P0BR );
+ __mtpr(tsk->thread.pcb.p0lr, PR_P0LR );
+ __mtpr(tsk->thread.pcb.p1br, PR_P1BR );
+ __mtpr(tsk->thread.pcb.p1lr, PR_P1LR );
+ flush_tlb_all();
}
- /* FIXME: flush TLB? */
}
-#endif
-void set_page_dir(struct task_struct * tsk, pgd_t * pgdir)
+int do_check_pgt_cache(int low_water, int high_water)
{
- printk("Panic: set_page_dir() not yet implemented\n");
- HALT;
+ /* FIXME: implement this */
+ return 0;
}
|
|
From: Kenn H. <ke...@us...> - 2001-01-26 00:26:38
|
Update of /cvsroot/linux-vax/kernel-2.4/drivers/char
In directory usw-pr-cvs1:/tmp/cvs-serv25353/drivers/char
Modified Files:
dz.c dz.h
Log Message:
Bring forward all 2.2 work from before new year. This should give us
all a (somewhat) bootable kernel.
Index: dz.c
===================================================================
RCS file: /cvsroot/linux-vax/kernel-2.4/drivers/char/dz.c,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- dz.c 2001/01/18 15:52:27 1.2
+++ dz.c 2001/01/26 00:27:00 1.3
@@ -1,5 +1,5 @@
/*
- * dz.c: Serial port driver for DECStations equiped
+ * dz.c: Serial port driver for DECStations & VAXstations equiped
* with the DZ chipset.
*
* Copyright (C) 1998 Olivier A. D. Lebaillif
@@ -19,7 +19,7 @@
* [07-SEP-99] Bugfixes
*/
-#define DEBUG_DZ 1
+/* #define DEBUG_DZ 1 */
#ifdef MODULE
#include <linux/module.h>
@@ -283,16 +283,22 @@
if (tmp & DZ_PERR)
{
*tty->flip.flag_buf_ptr = TTY_PARITY;
+#ifdef DEBUG_DZ
debug_console("PERR\n",5);
+#endif
}
else if (tmp & DZ_FERR)
{
*tty->flip.flag_buf_ptr = TTY_FRAME;
+#ifdef DEBUG_DZ
debug_console("FERR\n",5);
+#endif
}
if (tmp & DZ_OERR)
{
+#ifdef DEBUG_DZ
debug_console("OERR\n",5);
+#endif
if (tty->flip.count < TTY_FLIPBUF_SIZE) {
tty->flip.count++;
tty->flip.flag_buf_ptr++;
@@ -1526,7 +1532,7 @@
}
switch(parity) {
case 'o': case 'O':
- cflag |= DZ_PARODD;
+ cflag |= DZ_PARODD | PARENB;
break;
case 'e': case 'E':
cflag |= DZ_PARENB;
@@ -1545,8 +1551,10 @@
dz_console->port = KN02_DZ11_BASE;
#endif
dz_console->line = CONSOLE_LINE;
+
+ /* This line locks up Dave Airlie's VS3100m38 after HALT */
+ /* dz_out(dz_console, DZ_CSR, DZ_CLR); */
- dz_out(dz_console, DZ_CSR, DZ_CLR);
while ((tmp = dz_in(dz_console,DZ_CSR)) & DZ_CLR)
;
@@ -1554,10 +1562,7 @@
dz_out(dz_console, DZ_CSR, DZ_MSE);
/* Set up flags... */
- dz_console->cflags = 0;
- dz_console->cflags |= DZ_B9600;
- dz_console->cflags |= DZ_CS8;
- dz_console->cflags |= DZ_PARENB;
+ dz_console->cflags = co->cflag;
dz_out (dz_console, DZ_LPR, dz_console->cflags);
mask = 1 << dz_console->line;
@@ -1566,7 +1571,6 @@
tmp |= mask; /* set the TX flag */
dz_out (dz_console, DZ_TCR, tmp);
}
-
return 0;
}
Index: dz.h
===================================================================
RCS file: /cvsroot/linux-vax/kernel-2.4/drivers/char/dz.h,v
retrieving revision 1.1.1.1
retrieving revision 1.2
diff -u -r1.1.1.1 -r1.2
--- dz.h 2001/01/14 17:57:08 1.1.1.1
+++ dz.h 2001/01/26 00:27:00 1.2
@@ -1,5 +1,5 @@
/*
- * dz.h: Serial port driver for DECStations equiped
+ * dz.h: Serial port driver for DECStations and VAXstations equiped
* with the DZ chipset.
*
* Copyright (C) 1998 Olivier A. D. Lebaillif
@@ -10,6 +10,8 @@
#ifndef DZ_SERIAL_H
#define DZ_SERIAL_H
+#include <linux/config.h>
+
/*
* Definitions for the Control and Status Received.
*/
@@ -98,13 +100,21 @@
/*
* Addresses for the DZ registers
*/
+#ifdef CONFIG_VAX
+#define DZ_CSR 0x00 /* Control and Status Register */
+#define DZ_RBUF 0x04 /* Receive Buffer */
+#define DZ_LPR 0x04 /* Line Parameters Register */
+#define DZ_TCR 0x08 /* Transmitter Control Register */
+#define DZ_MSR 0x0c /* Modem Status Register */
+#define DZ_TDR 0x0c /* Transmit Data Register */
+#else
#define DZ_CSR 0x00 /* Control and Status Register */
#define DZ_RBUF 0x08 /* Receive Buffer */
#define DZ_LPR 0x08 /* Line Parameters Register */
#define DZ_TCR 0x10 /* Transmitter Control Register */
#define DZ_MSR 0x18 /* Modem Status Register */
#define DZ_TDR 0x18 /* Transmit Data Register */
-
+#endif
#define DZ_NB_PORT 4
|
|
From: Kenn H. <ke...@us...> - 2001-01-26 00:26:38
|
Update of /cvsroot/linux-vax/kernel-2.4/drivers/vsbus
In directory usw-pr-cvs1:/tmp/cvs-serv25353/drivers/vsbus
Added Files:
Makefile vsbus.c
Log Message:
Bring forward all 2.2 work from before new year. This should give us
all a (somewhat) bootable kernel.
--- NEW FILE ---
#
# Makefile for the linux 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).
#
# Note 2! The CFLAGS definitions are now in the main makefile...
SUB_DIRS :=
MOD_SUB_DIRS :=
ALL_SUB_DIRS :=
L_TARGET := vsbus.a
obj-y := vsbus.o
include $(TOPDIR)/Rules.make
--- NEW FILE ---
/*
* drivers/vsbus/vsbus.c
*
* Copyright (c) 2000 Dave Airlie
*
* Handles the VSBUS interrupt strategy.. heavily taken from NetBSD
* will be written eventually
*/
#include <asm/vsa.h>
#include <asm/io.h>
struct vs_cpu *vs_cpu_ptr;
int vsa_setup(void)
{
vs_cpu_ptr=(void *)ioremap(VSA_BASE_REGS, 128);
vs_cpu_ptr->vc_intreq=0;
return 0;
}
int vsa_enable_int(int bit_nr)
{
vs_cpu_ptr->vc_intmsk=1<<bit_nr;
return 0;
}
int vsa_clear_int(int bit_nr)
{
vs_cpu_ptr->vc_intclr=1<<bit_nr;
return 0;
}
int vsa_probe_irq(void)
{
return 0;
}
|
|
From: Kenn H. <ke...@us...> - 2001-01-26 00:26:38
|
Update of /cvsroot/linux-vax/kernel-2.4/arch/vax/kernel
In directory usw-pr-cvs1:/tmp/cvs-serv25353/arch/vax/kernel
Modified Files:
Makefile cpu_ka42.c cpu_ka43.c entry.S interrupt.c interrupt.h
process.c setup.c syscall.c time.c
Added Files:
signal.c
Removed Files:
delay.c softirq.c
Log Message:
Bring forward all 2.2 work from before new year. This should give us
all a (somewhat) bootable kernel.
--- NEW FILE ---
/*
$Id: signal.c,v 1.1 2001/01/26 00:27:00 kenn Exp $
This file contains the standard functions that the arch-independent
kernel expects for signal handling
*/
#include <linux/errno.h>
/* FIXME: obviously, these need to be filled in... */
int sys_sigaction(void)
{
return -ENOSYS;
}
int sys_sigsuspend(void)
{
return -ENOSYS;
}
int sys_sigreturn(void)
{
return -ENOSYS;
}
int sys_rt_sigreturn(void)
{
return -ENOSYS;
}
int sys_rt_sigsuspend(void)
{
return -ENOSYS;
}
int sys_sigaltstack(void)
{
return -ENOSYS;
}
Index: Makefile
===================================================================
RCS file: /cvsroot/linux-vax/kernel-2.4/arch/vax/kernel/Makefile,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- Makefile 2001/01/20 13:51:05 1.2
+++ Makefile 2001/01/26 00:27:00 1.3
@@ -11,9 +11,9 @@
O_TARGET := kernel.o
-obj-y := process.o setup.o regdump.o interrupt.o entry.o time.o delay.o \
- syscall.o \
- init_task.o softirq.o reboot.o cpu_generic.o \
+obj-y := process.o setup.o regdump.o interrupt.o entry.o time.o \
+ syscall.o signal.o \
+ init_task.o reboot.o cpu_generic.o \
cpu_ka630.o cpu_ka640.o cpu_ka650.o cpu_ka660.o \
cpu_ka410.o cpu_ka42.o cpu_ka43.o cpu_ka46.o
OX_OBJS :=
Index: cpu_ka42.c
===================================================================
RCS file: /cvsroot/linux-vax/kernel-2.4/arch/vax/kernel/cpu_ka42.c,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- cpu_ka42.c 2001/01/17 16:13:57 1.1
+++ cpu_ka42.c 2001/01/26 00:27:00 1.2
@@ -16,6 +16,7 @@
#include <asm/mtpr.h>
#include <asm/mv.h>
#include <asm/vaxcpu.h>
+#include <asm/vsa.h>
void ka42_init_devices(void);
void ka42_pre_vm_init(void);
@@ -72,6 +73,12 @@
void ka42_init_devices(void)
{
+#ifdef CONFIG_VSABUS
+ vsa_setup();
+#endif
+#ifdef CONFIG_VAX_LANCE
+ vax_lance_probe(0);
+#endif
}
const char *ka42_cpu_type_str(void)
Index: cpu_ka43.c
===================================================================
RCS file: /cvsroot/linux-vax/kernel-2.4/arch/vax/kernel/cpu_ka43.c,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- cpu_ka43.c 2001/01/17 16:13:57 1.1
+++ cpu_ka43.c 2001/01/26 00:27:00 1.2
@@ -16,9 +16,11 @@
#include <linux/config.h>
+#include <asm/io.h>
#include <asm/mtpr.h>
#include <asm/mv.h>
#include <asm/vaxcpu.h>
+#include <asm/vsa.h>
#include <asm/ka43.h>
void ka43_pre_vm_init(void);
@@ -30,6 +32,10 @@
void ka43_init_devices(void);
const char *ka43_cpu_type_str(void);
+
+/* These are initialized at compile time with the physical addresses
+ of the KA43's CPU-specific data structures. Once VM is turned on,
+ we'll map in these physical ranges, and update these pointers. */
static volatile unsigned int *ka43_creg = (void*)KA43_CH2_CREG;
static volatile unsigned int *ka43_ctag = (void*)KA43_CT2_BASE;
@@ -67,14 +73,6 @@
void ka43_pre_vm_init(void)
{
- /*
- * Resetting the cache involves disabling it, then clear it and enable again.
- *
- */
- ka43_cache_disable();
- ka43_cache_clear();
- ka43_cache_enable();
-
mv_ka43.sidex = *(unsigned int *)RIGEL_SIDEX_ADDR;
}
@@ -83,6 +81,17 @@
init_dz11_console(0x200A0000, 3);
dz_serial_console_init(0, 0);
+
+ ka43_creg = ioremap(KA43_CH2_CREG, 1);
+ ka43_ctag = ioremap(KA43_CT2_BASE, KA43_CT2_SIZE);
+
+ /*
+ * Resetting the cache involves disabling it, then clear it and enable again.
+ */
+ ka43_cache_disable();
+ ka43_cache_clear();
+ ka43_cache_enable();
+
}
void ka43_cache_disable(void)
@@ -132,9 +141,14 @@
void ka43_init_devices(void)
{
+#ifdef CONFIG_VSABUS
+ vsa_setup();
+
#ifdef CONFIG_VAX_LANCE
vax_lance_probe(0);
-#endif
+#endif /* CONFIG_VAX_LANCE */
+
+#endif /* CONFIG_VSABUS */
}
Index: entry.S
===================================================================
RCS file: /cvsroot/linux-vax/kernel-2.4/arch/vax/kernel/entry.S,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- entry.S 2001/01/17 16:13:57 1.1
+++ entry.S 2001/01/26 00:27:00 1.2
@@ -8,6 +8,7 @@
*/
#include <linux/sys.h>
+#include <asm/mtpr.h>
/* irqvec_handler is the generic handler for all interrupts and
exceptions for which a driver (or other code) has registered
@@ -59,7 +60,7 @@
pushl (sp)[r0] /* Push saved PSL again */
pushl (sp)[r0] /* Push saved PC again */
- pushal 12(sp)[r0] /* Save SP at time of exception */
+ mfpr $PR_USP,-(sp) /* Save user SP at time of exception */
pushr $0x3ffe /* Push FP to R1 */
pushl 64(sp) /* Duplicate saved R0 */
@@ -68,7 +69,7 @@
SP: saved R0
+4 saved R1
...
- +56 saved SP
+ +56 saved user SP
+60 saved PC
+64 saved PSL
+68 saved R0
@@ -89,6 +90,9 @@
calls $3, do_irq_excep
+.globl ret_from_syscall
+ret_from_syscall:
+
/* Now we need to restore all registers, clear the stack down to
the original saved PC/PSL and dismiss the interrupt. The
stack currently looks like the same as above. */
@@ -107,7 +111,7 @@
/* The stack now looks like:
- SP: saved SP
+ SP: saved user SP
+4 saved PC (maybe modified by exception handler)
+8 saved PSL (end of struct pt_regs)
+12 saved R0 (maybe modified by exception handler)
@@ -131,7 +135,7 @@
/* The stack now looks like:
- SP: saved SP
+ SP: saved user SP
+4 saved PC (maybe modified by exception handler)
+8 saved PSL (end of struct pt_regs)
+12 saved R0 (maybe modified by exception handler)
@@ -152,7 +156,7 @@
/* Stack now looks like
- SP: saved R0
+ SP: saved R0
+4 saved PC
+8 saved PSL */
@@ -215,7 +219,7 @@
.long sys_lseek
.long sys_getpid /* 20 */
.long sys_mount
- .long sys_oldumount
+ .long sys_ni_syscall /* old umount syscall holder */
.long sys_setuid
.long sys_getuid
.long sys_stime /* 25 */
@@ -245,14 +249,14 @@
.long sys_geteuid
.long sys_getegid /* 50 */
.long sys_acct
- .long sys_umount /* recycled never used phys() */
+ .long sys_umount /* recycled never used phys() */
.long sys_ni_syscall /* old lock syscall holder */
.long sys_ioctl
.long sys_fcntl /* 55 */
.long sys_ni_syscall /* old mpx syscall holder */
.long sys_setpgid
.long sys_ni_syscall /* old ulimit syscall holder */
- .long sys_olduname
+ .long sys_ni_syscall /* old uname syscall holder */
.long sys_umask /* 60 */
.long sys_chroot
.long sys_ustat
@@ -275,12 +279,15 @@
.long sys_settimeofday
.long sys_getgroups /* 80 */
.long sys_setgroups
+ .long sys_select
.long sys_symlink
.long sys_lstat
.long sys_readlink /* 85 */
.long sys_uselib
.long sys_swapon
.long sys_reboot
+ .long sys_ni_syscall /* old readdir syscall holder */
+ .long sys_mmap /* 90 */
.long sys_munmap
.long sys_truncate
.long sys_ftruncate
@@ -291,7 +298,7 @@
.long sys_ni_syscall /* old profil syscall holder */
.long sys_statfs
.long sys_fstatfs /* 100 */
- .long sys_ioperm
+ .long sys_ni_syscall /* 101 ioperm in i386 */
.long sys_socketcall
.long sys_syslog
.long sys_setitimer
@@ -300,9 +307,9 @@
.long sys_newlstat
.long sys_newfstat
.long sys_uname
- .long sys_iopl /* 110 */
+ .long sys_ni_syscall /* 110 iopl in i386 */
.long sys_vhangup
- .long sys_idle
+ .long sys_ni_syscall /* old idle syscall */
.long sys_ni_syscall /* 113 vm86old in i386 */
.long sys_wait4
.long sys_swapoff /* 115 */
Index: interrupt.c
===================================================================
RCS file: /cvsroot/linux-vax/kernel-2.4/arch/vax/kernel/interrupt.c,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -r1.3 -r1.4
--- interrupt.c 2001/01/20 22:00:20 1.3
+++ interrupt.c 2001/01/26 00:27:00 1.4
@@ -29,12 +29,10 @@
union scb_and_device_vectors __attribute((__aligned__(VPAGE_SIZE))) scb;
-/* These are now part of the irq_cpustat_t structure defined in
- * include/asm-vax/hardirq.h, accessor functions in include/linux/irq_cpustat.h
- * and variable declaration in linux/kernel/softirq.c
- */
-/* unsigned int local_irq_count[NR_CPUS]; */
-/* unsigned int local_bh_count[NR_CPUS]; */
+#if 0
+unsigned int local_irq_count[NR_CPUS];
+unsigned int local_bh_count[NR_CPUS];
+#endif
/* Statically-defined pool of irqvector structures. This will go once
we have a working kmalloc()/kfree().
@@ -243,9 +241,8 @@
status = dispatch_irq(regs, vec);
if (status) {
- if ( in_softirq() ) {
- /* Not ready for this yet */
- /* do_bottom_half(); */
+ if (in_softirq()) {
+ do_softirq();
}
}
@@ -260,8 +257,12 @@
/* This is called from irqvec_handler in entry.S. At this point, inside_vec
points to the excep_info_size field of the relevant struct irqvector.
Locate the actual struct irqvector and dispatch the interrupt or
- exception. */
+ exception.
+ "Understanding the Linux Kernel" by Bovet & Cesati from O'Reilly
+ contains the best explanation I've found for the various exit paths
+ from this function. */
+
void do_irq_excep(struct pt_regs *regs, void *inside_vec, void *excep_info)
{
struct irqvector *vec;
@@ -275,9 +276,41 @@
if (vec->excep_handler != NULL) {
do_exception(regs, vec, excep_info);
+ if (vec == scb.scb.chmk) {
+ goto ret_from_sys_call;
+ } else {
+ goto ret_from_exception;
+ }
} else {
do_irq(regs, vec);
+ goto ret_from_intr;
+ }
+
+ret_from_sys_call:
+ if (in_softirq()) {
+ do_softirq();
+ goto ret_from_intr;
+ }
+ goto ret_with_reschedule;
+
+ret_from_exception:
+ if (in_softirq()) {
+ do_softirq();
+ }
+
+ret_from_intr:
+ if (__psl.prevmode == 0) {
+ /* returning to kernel mode */
+ goto done;
+ }
+
+ret_with_reschedule:
+ if (current->need_resched) {
+ schedule();
+ goto ret_from_sys_call;
}
+ /* Check for signals here */
+done:
}
/* These two functions, alloc_irqvector() and free_irqvector() are temporary
Index: interrupt.h
===================================================================
RCS file: /cvsroot/linux-vax/kernel-2.4/arch/vax/kernel/interrupt.h,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- interrupt.h 2001/01/20 22:00:20 1.2
+++ interrupt.h 2001/01/26 00:27:00 1.3
@@ -51,18 +51,17 @@
depends on it. */
unsigned short vec_num; /* Offset into SCB (in longwords, not bytes) */
struct irqaction action; /* Linux's normal interrupt vector structure */
- int (*excep_handler)(struct pt_regs *, void *);
+ void (*excep_handler)(struct pt_regs *, void *);
unsigned char *orig_scb_vector; /* Original stray handler from SCB, restored when
vector is un-hooked */
} __attribute__ ((__packed__));
/* And declarations of some standard interrupt handlers */
-/* The type for these is declared in asm-vax/irq.h */
extern void accvio_handler(struct pt_regs *regs, void *excep_info);
extern void page_fault_handler(struct pt_regs *regs, void *excep_info);
extern void reserved_operand_handler(struct pt_regs *regs, void *excep_info);
extern void corrected_read_handler(struct pt_regs *regs, void *excep_info);
-extern int syscall_handler(struct pt_regs *regs, void *excep_info);
+extern void syscall_handler(struct pt_regs *regs, void *excep_info);
Index: process.c
===================================================================
RCS file: /cvsroot/linux-vax/kernel-2.4/arch/vax/kernel/process.c,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- process.c 2001/01/20 13:51:05 1.2
+++ process.c 2001/01/26 00:27:00 1.3
@@ -1,60 +1,227 @@
+/*
+ $Id$
+
+ This file contains the standard functions that the arch-independent
+ kernel expects for process handling and scheduling
+
+*/
+
+#define __KERNEL_SYSCALLS__
+
+#include <linux/smp_lock.h>
+#include <linux/fs.h>
+#include <linux/malloc.h>
+
#include <asm/current.h>
#include <asm/processor.h>
#include <asm/io.h>
#include <asm/mtpr.h>
+#include <asm/ptrace.h>
-/* sys_idle seems to have been lost as a specific syscall.
- * and replaced by cpu_idle. I'm renaming this cpu_idle.
- */
-asmlinkage int cpu_idle(void)
-{
-
-
- if (current->pid != 0)
- return -EPERM;
+#include <asm/unistd.h>
+void cpu_idle(void)
+{
/* endless idle loop with no priority at all */
- init_idle();
- current->nice = 20;
- current->counter = -100;
+ current->nice = 20;
+ current->counter = -100;
-
while(1) {
+ /* Although we are an idle CPU, we do not want to
+ get into the scheduler unnecessarily. */
if (current->need_resched) {
schedule();
check_pgt_cache();
}
}
-
- return 0;
}
-#if 0 /* Removed KPH 2000-10-03 */
-
struct task_struct*
vax_switch_to(struct task_struct* prev, struct task_struct* next)
{
- unsigned long pcbb; /* physical address of pcbb */
+ unsigned long pcbb; /* physical address of new pcb */
+ struct task_struct *retval;
+
+ printk("vax_switch_to: switching %08lx -> %08lx\n",
+ (unsigned long)prev, (unsigned long)next);
- /* We should check that __pa((prev)->tss.pcb) == PR_PCBB */
- current = (next);
- /* get phys address of next process pcb */
- pcbb = virt_to_phys(¤t->tss.pcb);
+ /* We should check that __pa((prev)->thread.pcb) == PR_PCBB */
+
+ /* Get phys address of next process pcb */
+ pcbb = virt_to_phys(&next->thread.pcb);
/* svpctx should deal with writing the stuff into *prev */
- asm( "svpctx\n\t"
- "mtpr %0, %1\n\t\n\t"
- "ldpctx\n"
- : /* nothing */
- : "m" (pcbb), "g" (PR_PCBB)
+ asm(" movl %1, r11 \n
+ movpsl -(sp) \n
+ pushab 1f \n
+ mtpr %4,%5 \n
+ svpctx \n
+ mtpr %2, %3 \n
+ ldpctx \n
+ rei \n
+ 1: \n
+ movl r11, %0"
+ : "=g"(retval)
+ : "g"(prev),
+ "r"(pcbb), "g"(PR_PCBB),
+ "g"(31), "g"(PR_IPL)
+ : "r11"
);
- return (prev);
+ return retval;
}
-#endif
+/* This _must_ match the stack layout in effect at ret_from_syscall
+ in entry.S.
+ We do a bit of a hack here. The handler_PC (i.e. the saved PC
+ value from the JSB in the irqvector structure) normally points
+ to the excep_info_size member of the irqvector. When we build
+ the fake stack frame for the new thread, we don't have an
+ irqvector available. So what we do is pretend we have one longword
+ of exception info, we put the value 1 into this longword and we
+ point the handler_PC field at this 'exception info'. */
+
+struct new_thread_stack {
+ struct pt_regs regs;
+ unsigned long saved_r0; /* will be overwritten by regs->r0 */
+ unsigned long *excep_info_size; /* must point to excep_info */
+ unsigned long excep_info; /* must contain the value 1 */
+ unsigned long saved_pc; /* will be overwritten by regs->pc */
+ struct psl_fields saved_psl;
+};
+
+/* Defined in entry.S */
+extern void ret_from_syscall(void);
+
+int copy_thread(int nr, unsigned long clone_flags, unsigned long usp,
+ unsigned long unused,
+ struct task_struct *p, struct pt_regs *regs)
+{
+ struct new_thread_stack *child_stack;
+ struct pt_regs *child_regs;
+ void *stack_top;
+
+ printk("copy_thread: creating new thread: pid %d, task 0x%08lx, usp 0x%08lx\n",
+ nr, (unsigned long)p, usp);
+
+ stack_top = ((union task_union *)p) + 1;
+
+ child_stack = (struct new_thread_stack *)(stack_top) - 1;
+
+ child_regs = &child_stack->regs;
+
+ *child_regs = *regs;
+ child_regs->r0 = 0; /* fork() returns 0 in child */
+
+ child_stack->excep_info = 1;
+ child_stack->excep_info_size = &child_stack->excep_info;
+ child_stack->saved_psl = regs->psl;
+
+ p->thread.pcb.ksp = (unsigned long)child_stack;
+ p->thread.pcb.usp = usp;
+ p->thread.pcb.pc = (unsigned long)ret_from_syscall;
+ p->thread.pcb.psl = __psl;
+
+ /* We could speed this up by loading the register values into
+ the PCB and start the new thread just before the REI in
+ entry.S, letting the regular context switching load the
+ registers from the PCB. However, once signal and bottom-half
+ handling go into the ret_from_syscall path, then things might
+ change. So I'll stick with this 'obviously correct' method
+ for now. KPH 2000-10-30 */
+
+ return 0;
+}
+
+static ATTRIB_NORET void kernel_thread_exit(int exitcode)
+{
+ __chmk(__NR_exit);
+}
+/*
+ * Create a kernel thread
+ */
+
+pid_t kernel_thread(int (*fn)(void *), void * arg, unsigned long flags)
+{
+ asm(" clrl -(sp) \n
+ movl %0, -(sp) \n
+ pushl $0x2 \n
+ movl sp, ap \n
+ chmk %1 \n
+ tstl r0 \n
+ beql child \n
+ ret \n
+ child:"
+ : /* no outputs */
+ : "g"(flags|CLONE_VM),
+ "g"(__NR_clone)
+ : "r0", "ap"
+ );
+
+ /* In child. At this point SP points to the very top of
+ our kernel stack, so we cannot pop anything off. That
+ means that we can never return from here. */
+/* printk("kernel_thread: child\n"); */
+ kernel_thread_exit(fn(arg));
+}
+
+int sys_clone(unsigned long clone_flags, unsigned long newsp, struct pt_regs *regs)
+{
+ int retval;
+
+ if (!newsp) {
+ newsp = regs->sp;
+ }
+
+/* printk("sys_clone: calling do_fork(0x%08lx, 0x%08lx, 0x%p)\n",
+ clone_flags, newsp, regs); */
+
+ retval = do_fork(clone_flags, newsp, regs, 0);
+
+/* printk("sys_clone: do_fork() returned %d\n", retval); */
+
+ return retval;
+}
+
+int sys_fork(struct pt_regs *regs)
+{
+ return do_fork(SIGCHLD, regs->sp, regs, 0);
+}
+
+int sys_vfork(struct pt_regs *regs)
+{
+ return do_fork(CLONE_VFORK | CLONE_VM | SIGCHLD, regs->sp, regs, 0);
+}
+
+int sys_ptrace(long request, long pid, long addr, long data)
+{
+ return -ENOSYS;
+}
+
+/*
+ * sys_execve() executes a new program.
+ *
+ */
+int sys_execve(char *filename, char **argv, char **envp,
+ struct pt_regs *regs)
+{
+ int error;
+ char *tmpname;
+
+ tmpname = getname(filename);
+ error = PTR_ERR(tmpname);
+ if (IS_ERR(tmpname))
+ goto out;
+ error = do_execve(tmpname, argv, envp, regs);
+ if (error == 0) {
+ current->ptrace &= ~PT_DTRACE;
+ }
+ putname(tmpname);
+out:
+ return error;
+}
Index: setup.c
===================================================================
RCS file: /cvsroot/linux-vax/kernel-2.4/arch/vax/kernel/setup.c,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- setup.c 2001/01/17 16:13:57 1.1
+++ setup.c 2001/01/26 00:27:00 1.2
@@ -1,5 +1,5 @@
/*
- * linux/arch/alpha/kernel/setup.c
+ * $Id$
*
* Copyright (C) 1995 Linus Torvalds
* VAX port copyright atp 1998.
@@ -17,52 +17,24 @@
#include <linux/ptrace.h>
#include <linux/malloc.h>
#include <linux/user.h>
-#include <linux/a.out.h>
#include <linux/tty.h>
#include <linux/delay.h>
#include <linux/config.h>
#include <linux/console.h>
-#include <linux/errno.h>
#include <linux/init.h>
#include <linux/string.h>
-#ifdef CONFIG_RTC
-#include <linux/timex.h>
-#endif
-#ifdef CONFIG_BLK_DEV_INITRD
-#include <linux/blk.h>
-#endif
#include <asm/pgtable.h>
#include <asm/rpb.h>
#define COMMAND_LINE_SIZE 256
-unsigned char aux_device_present = 0xaa;
-
static char command_line[COMMAND_LINE_SIZE];
char saved_command_line[COMMAND_LINE_SIZE];
-extern struct rpb_struct boot_rpb;
-
-unsigned long __init
-find_end_memory(void)
-{
- unsigned int phys_mem;
-
- /* get the end of physical memory out of RPB
- * which has been put there by VMB. The system
- * page table which covers this, is setup in boot/head.S */
- phys_mem = boot_rpb.l_pfncnt << PAGE_SHIFT;
-
- return (unsigned long) __va(phys_mem);
-}
-
void __init
-setup_arch(char **cmdline_p, unsigned long * memory_start_p,
- unsigned long * memory_end_p)
+setup_arch(char **cmdline_p)
{
- unsigned long mem_start;
-
/*
* Locate the command line. - Don't have one yet...
*/
@@ -71,20 +43,15 @@
/* Get the SID */
vax_cpu.sid = __mfpr(PR_SID);
-
- /*
- * Indentify and reconfigure for the current system.
- */
- /* Find the virtual address of the end of memory. */
- *memory_end_p = find_end_memory();
+ /* Set up the initial PCB. We can refer to current because head.S
+ has already set us up on the kernel stack of task 0. */
+ __mtpr(__pa(¤t->thread.pcb), PR_PCBB);
- /* For our purposes, available memory starts after the end
- of the system page table */
- mem_start = (unsigned long) (pg0 + spt_size);
+ memset(¤t->thread.pcb, 0, sizeof(current->thread.pcb));
+ current->thread.pcb.astlvl = 4;
- /* Round memstart up to next page boundary */
- *memory_start_p = (mem_start + (PAGE_SIZE-1)) & PAGE_MASK;
+ SET_PAGE_DIR(current, swapper_pg_dir);
/* No root filesystem yet */
ROOT_DEV = NODEV;
Index: syscall.c
===================================================================
RCS file: /cvsroot/linux-vax/kernel-2.4/arch/vax/kernel/syscall.c,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- syscall.c 2001/01/17 16:13:57 1.1
+++ syscall.c 2001/01/26 00:27:00 1.2
@@ -7,8 +7,23 @@
#include <linux/sys.h>
+#include <linux/errno.h>
+#include <linux/sched.h>
+#include <linux/mm.h>
+#include <linux/smp.h>
+#include <linux/smp_lock.h>
+#include <linux/mman.h>
+#include <linux/file.h>
+#include <linux/sem.h>
+#include <linux/msg.h>
+#include <linux/shm.h>
+#include <linux/utsname.h>
+
#include <asm/uaccess.h>
#include <asm/ptrace.h>
+#ifdef CONFIG_SYSVIPC
+#include <asm/ipc.h>
+#endif /* CONFIG_SYSVIPC */
#include "interrupt.h" /* Local, private definitions */
@@ -17,59 +32,214 @@
extern unsigned long *sys_call_table[256];
-int syscall_handler(struct pt_regs *regs, void *excep_info)
+void syscall_handler(struct pt_regs *regs, void *excep_info)
{
unsigned int chmk_arg;
- unsigned int *ap;
+ unsigned int *user_ap;
unsigned int nr_args;
- register unsigned int retval __asm__("r0");
chmk_arg = *(unsigned int *)(excep_info);
if (chmk_arg >= NR_syscalls) {
- return -ENOSYS;
+ regs->r0 = -ENOSYS;
+ return;
}
+
+ user_ap = (unsigned int *)(regs->ap);
+
+ if (regs->psl.prevmode == PSL_MODE_USER) {
+
+ /* syscall came from user mode */
+
+ if (user_ap >= (unsigned int *)0x80000000) {
+ regs->r0 = -EFAULT;
+ return;
+ }
+
+ /* We don't need to deal with the case where AP + nr_args*4
+ reaches up into S0 space because we've got a guard page
+ at 0x80000000 that will cause an exception in the movc3
+ below that copies the argument list */
+
+ if (get_user(nr_args, user_ap)) {
+ regs->r0 = -EFAULT;
+ return;
+ }
+
+ /* The SP value in the pt_regs structure should really
+ be the user stack pointer, not the kernel stack pointer */
+ regs->sp = __mfpr(PR_USP);
- ap = (unsigned int *)(regs->ap);
+ } else {
- if (ap >= (unsigned int *)0x80000000) {
- return -EFAULT;
+ /* syscall came from kernel mode - don't need to do
+ any access checks */
+
+ nr_args = *user_ap;
}
+
+/* printk("Dispatching syscall %d with %d args\n", chmk_arg, nr_args); */
- /* We don't need to deal with the case where AP + nr_args*4
- reaches up into S0 space because we've got a guard page
- at 0x80000000 that will cause an exception in the movc3
- below that copies the argument list */
-
- __get_user_ret(nr_args, ap, -EFAULT);
-
- __asm__(" subl2 %0,sp \n
- 1: movc3 %0,4(ap),(sp) \n
- calls %1, %2 \n
+ /* We pass all the user-supplied args plus the pointer to the
+ regs to the syscall function. If the syscall is implemented
+ in the core kernel, then it will ignore the additional
+ argument.
+
+ SECURITY FLAW:
+ This is severly broken, though. If the user passes too many
+ arguments, then the syscall handler will pick up the wrong
+ regs pointer.
+
+ We may need to have a table that contains the number of args
+ each syscall expects and check this against the number supplied
+ by the user.
+
+ We'll sort this out later... - KPH 2000-10-16 */
+
+ __asm__(" pushl %1 \n
+ subl2 %2,sp \n
+ 1: movc3 %2,4(%4),(sp) \n
+ calls %3, %5 \n
brb 3f \n
- 2: movl %3, r0 \n
- 3: \n
+ 2: movl %6, r0 \n
+ 3: movl r0, %0 \n
.section ex_table,\"a\" \n
.align 2 \n
.long 1b, 2b \n
.text"
- : /* implicit output in r0 (retval) */
- : "g"(nr_args*4), "g"(nr_args),
+ : "=g"(regs->r0)
+ : "g"(regs),
+ "g"(nr_args*4), "g"(nr_args+1),
+ "r"(user_ap),
"g"(*sys_call_table[chmk_arg]),
"g"(-EFAULT)
: "r0","r1","r2","r3","r4","r5" /* clobbers*/ );
- return retval;
+/* printk("syscall %d returned %ld (0x%08lx)\n", chmk_arg, regs->r0, regs->r0); */
+
+ return;
}
+
/*
- * copied from i386 version - cpg
+ * The syscall handlers from here on down are pretty much copied
+ * directly from other arches. Don't know whether they'll work or not...
*/
-asmlinkage int sys_pause(void)
+int sys_pause(void)
{
current->state = TASK_INTERRUPTIBLE;
schedule();
return -ERESTARTNOHAND;
}
+int sys_pipe(unsigned long *fildes)
+{
+ int fd[2];
+ int error;
+
+ lock_kernel();
+ error = do_pipe(fd);
+ unlock_kernel();
+ if (!error) {
+ if (copy_to_user(fildes, fd, 2*sizeof(int)))
+ error = -EFAULT;
+ }
+ return error;
+}
+
+/*
+ * sys_ipc() is the de-multiplexer for the SysV IPC calls..
+ *
+ * This is really horribly ugly.
+ */
+int sys_ipc (uint call, int first, int second,
+ int third, void *ptr, long fifth)
+{
+#ifdef CONFIG_SYSVIPC
+ int ret;
+
+ switch (call) {
+ case SEMOP:
+ return sys_semop (first, (struct sembuf *)ptr, second);
+ case SEMGET:
+ return sys_semget (first, second, third);
+ case SEMCTL: {
+ union semun fourth;
+ if (!ptr)
+ return -EINVAL;
+ if (get_user(fourth.__pad, (void **) ptr))
+ return -EFAULT;
+ return sys_semctl (first, second, third, fourth);
+ }
+ case MSGSND:
+ return sys_msgsnd (first, (struct msgbuf *) ptr,
+ second, third);
+ break;
+ case MSGRCV:
+ return sys_msgrcv (first,
+ (struct msgbuf *) ptr,
+ second, fifth, third);
+ case MSGGET:
+ return sys_msgget ((key_t) first, second);
+ case MSGCTL:
+ return sys_msgctl (first, second, (struct msqid_ds *) ptr);
+
+ case SHMAT: {
+ ulong raddr;
+ ret = sys_shmat (first, (char *) ptr, second, &raddr);
+ if (ret)
+ return ret;
+ return put_user (raddr, (ulong *) third);
+ break;
+ }
+ case SHMDT:
+ return sys_shmdt ((char *)ptr);
+ case SHMGET:
+ return sys_shmget (first, second, third);
+ case SHMCTL:
+ return sys_shmctl (first, second,
+ (struct shmid_ds *) ptr);
+ default:
+ return -EINVAL;
+
+ }
+
+ return -EINVAL;
+#else /* CONFIG_SYSVIPC */
+ return -ENOSYS;
+#endif /* CONFIG_SYSVIPC */
+}
+
+int sys_uname(struct old_utsname * name)
+{
+ int err;
+ if (!name)
+ return -EFAULT;
+ down(&uts_sem);
+ err=copy_to_user(name, &system_utsname, sizeof (*name));
+ up(&uts_sem);
+ return err?-EFAULT:0;
+}
+
+unsigned long sys_mmap(unsigned long addr, size_t len, int prot,
+ int flags, int fd, off_t offset)
+{
+ struct file * file = NULL;
+ unsigned long error = -EFAULT;
+
+ lock_kernel();
+ if (!(flags & MAP_ANONYMOUS)) {
+ error = -EBADF;
+ file = fget(fd);
+ if (!file)
+ goto out;
+ }
+ flags &= ~(MAP_EXECUTABLE | MAP_DENYWRITE);
+ error = do_mmap(file, addr, len, prot, flags, offset);
+ if (file)
+ fput(file);
+out:
+ unlock_kernel();
+ return error;
+}
Index: time.c
===================================================================
RCS file: /cvsroot/linux-vax/kernel-2.4/arch/vax/kernel/time.c,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- time.c 2001/01/17 16:13:57 1.1
+++ time.c 2001/01/26 00:27:00 1.2
@@ -1,5 +1,5 @@
/*
- * linux/arch/vax/kernel/time.c
+ * $Id$
*
* Copyright (C) 1995 Linus Torvalds
* VAX port copyright atp 1998.
@@ -17,17 +17,15 @@
#include <linux/kernel.h>
#include <linux/sched.h>
+#include <linux/init.h>
-#include <asm/init.h>
#include <asm/irq.h>
#include <asm/mtpr.h>
-#include <asm/system.h>
#include <asm/clock.h>
-#include <asm/ptrace.h>
static void do_timer_interrupt(int vec_num, void *dev_id, struct pt_regs *regs);
-__initfunc(void time_init(void))
+void __init time_init(void)
{
xtime.tv_usec = 0;
xtime.tv_sec = 0;
--- delay.c DELETED ---
--- softirq.c DELETED ---
|
|
From: Kenn H. <ke...@us...> - 2001-01-26 00:26:37
|
Update of /cvsroot/linux-vax/kernel-2.4/arch/vax/lib In directory usw-pr-cvs1:/tmp/cvs-serv25353/arch/vax/lib Modified Files: string.c Log Message: Bring forward all 2.2 work from before new year. This should give us all a (somewhat) bootable kernel. Index: string.c =================================================================== RCS file: /cvsroot/linux-vax/kernel-2.4/arch/vax/lib/string.c,v retrieving revision 1.1 retrieving revision 1.2 diff -u -r1.1 -r1.2 --- string.c 2001/01/17 16:13:57 1.1 +++ string.c 2001/01/26 00:27:00 1.2 @@ -1,5 +1,5 @@ /* - * linux/lib/string.c + * $Id$ * * Copyright (C) 1991, 1992 Linus Torvalds */ @@ -13,7 +13,7 @@ #include <linux/string.h> -char * ___strtok = NULL; +extern char * ___strtok; #ifdef __HAVE_ARCH_STRCPY char * strcpy(char * dest,const char *src) |
|
From: Kenn H. <ke...@us...> - 2001-01-26 00:26:37
|
Update of /cvsroot/linux-vax/kernel-2.4/arch/vax
In directory usw-pr-cvs1:/tmp/cvs-serv25353/arch/vax
Modified Files:
Makefile defconfig vmlinux.lds
Log Message:
Bring forward all 2.2 work from before new year. This should give us
all a (somewhat) bootable kernel.
Index: Makefile
===================================================================
RCS file: /cvsroot/linux-vax/kernel-2.4/arch/vax/Makefile,v
retrieving revision 1.5
retrieving revision 1.6
diff -u -r1.5 -r1.6
--- Makefile 2001/01/20 13:51:05 1.5
+++ Makefile 2001/01/26 00:27:00 1.6
@@ -93,7 +93,6 @@
$(LD) $(LINKFLAGS) $(HEAD) init/main.o init/version.o \
--start-group \
$(CORE_FILES) \
- $(FILESYSTEMS) \
$(NETWORKS) \
$(DRIVERS) \
$(LIBS) \
Index: defconfig
===================================================================
RCS file: /cvsroot/linux-vax/kernel-2.4/arch/vax/defconfig,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- defconfig 2001/01/17 16:13:57 1.1
+++ defconfig 2001/01/26 00:27:00 1.2
@@ -10,6 +10,7 @@
# CONFIG_BINFMT_AOUT is not set
CONFIG_ELF_KERNEL=y
# CONFIG_EXTRA_ELF_COMPILER is not set
+# CONFIG_SMP is not set
CONFIG_NET=y
# CONFIG_SYSVIPC is not set
# CONFIG_BSD_PROCESS_ACCT is not set
@@ -26,6 +27,7 @@
CONFIG_QBUS=y
CONFIG_UNIBUS=y
CONFIG_VAXBI=y
+CONFIG_VSABUS=y
#
# Mass storage support
@@ -38,7 +40,7 @@
#
# CONFIG_PACKET is not set
# CONFIG_NETLINK is not set
-# CONFIG_FIREWALL is not set
+# CONFIG_NETFILTER is not set
# CONFIG_FILTER is not set
# CONFIG_UNIX is not set
# CONFIG_INET is not set
@@ -48,6 +50,8 @@
#
# CONFIG_IPX is not set
# CONFIG_ATALK is not set
+# CONFIG_DECNET is not set
+# CONFIG_BRIDGE is not set
#
# SCSI support
@@ -64,38 +68,66 @@
CONFIG_VAX_LANCE=y
#
-# Filesystems
+# File systems
#
# CONFIG_QUOTA is not set
# CONFIG_AUTOFS_FS is not set
+# CONFIG_AUTOFS4_FS is not set
+# CONFIG_ADFS_FS is not set
+# CONFIG_ADFS_FS_RW is not set
# CONFIG_AFFS_FS is not set
# CONFIG_HFS_FS is not set
+# CONFIG_BFS_FS is not set
# CONFIG_FAT_FS is not set
# CONFIG_MSDOS_FS is not set
# CONFIG_UMSDOS_FS is not set
# CONFIG_VFAT_FS is not set
+# CONFIG_EFS_FS is not set
+# CONFIG_JFFS_FS is not set
+# CONFIG_CRAMFS is not set
+# CONFIG_RAMFS is not set
# CONFIG_ISO9660_FS is not set
# CONFIG_JOLIET is not set
# CONFIG_MINIX_FS is not set
# CONFIG_NTFS_FS is not set
+# CONFIG_NTFS_RW is not set
# CONFIG_HPFS_FS is not set
# CONFIG_PROC_FS is not set
+# CONFIG_DEVFS_FS is not set
+# CONFIG_DEVFS_MOUNT is not set
+# CONFIG_DEVFS_DEBUG is not set
+# CONFIG_DEVPTS_FS is not set
+# CONFIG_QNX4FS_FS is not set
+# CONFIG_QNX4FS_RW is not set
# CONFIG_ROMFS_FS is not set
# CONFIG_EXT2_FS is not set
# CONFIG_SYSV_FS is not set
+# CONFIG_SYSV_FS_WRITE is not set
+# CONFIG_UDF_FS is not set
+# CONFIG_UDF_RW is not set
# CONFIG_UFS_FS is not set
+# CONFIG_UFS_FS_WRITE is not set
#
# Network File Systems
#
+# CONFIG_CODA_FS is not set
+# CONFIG_NFS_FS is not set
+# CONFIG_NFS_V3 is not set
+# CONFIG_ROOT_NFS is not set
+# CONFIG_NFSD is not set
+# CONFIG_NFSD_V3 is not set
+# CONFIG_SUNRPC is not set
+# CONFIG_LOCKD is not set
+# CONFIG_SMB_FS is not set
+# CONFIG_NCPFS_NLS is not set
#
# Partition Types
#
-# CONFIG_BSD_DISKLABEL is not set
-# CONFIG_MAC_PARTITION is not set
-# CONFIG_SMD_DISKLABEL is not set
-# CONFIG_SOLARIS_X86_PARTITION is not set
+# CONFIG_PARTITION_ADVANCED is not set
+CONFIG_MSDOS_PARTITION=y
+# CONFIG_SMB_NLS is not set
# CONFIG_NLS is not set
#
Index: vmlinux.lds
===================================================================
RCS file: /cvsroot/linux-vax/kernel-2.4/arch/vax/vmlinux.lds,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- vmlinux.lds 2001/01/17 16:13:57 1.1
+++ vmlinux.lds 2001/01/26 00:27:00 1.2
@@ -23,6 +23,9 @@
*(.gnu.warning)
} = 0x9090
.text.lock : { *(.text.lock) } /* out-of-line lock text */
+
+ _etext = .; /* End of text section */
+
.rodata : { *(.rodata) }
.kstrtab : { *(.kstrtab) }
@@ -35,8 +38,6 @@
__ksymtab : { *(__ksymtab) }
__stop___ksymtab = .;
- _etext = .; /* End of text section */
-
.data : { /* Data */
*(.data)
CONSTRUCTORS
@@ -51,17 +52,33 @@
__init_begin = .;
.text.init : { *(.text.init) }
.data.init : { *(.data.init) }
- __init_data_end = .; /* This is end of loadable image */
-
+ . = ALIGN(16);
+ __setup_start = .;
+ .setup.init : { *(.setup.init) }
+ __setup_end = .;
+ __initcall_start = .;
+ .initcall.init : { *(.initcall.init) }
+ __initcall_end = .;
. = ALIGN(4096);
__init_end = .;
+
+ . = ALIGN(4096);
+ __init_end = .; /* This is end of loadable image */
+
__bss_start = .; /* BSS */
.bss : {
*(.bss)
}
_end = .; /* Boot code uses this to determine how much
code and data to relocate */
+
+ /* Sections to be discarded */
+ /DISCARD/ : {
+ *(.text.exit)
+ *(.data.exit)
+ *(.exitcall.exit)
+ }
/* Stabs debugging sections. */
.stab 0 : { *(.stab) }
|
|
From: Kenn H. <ke...@us...> - 2001-01-26 00:26:37
|
Update of /cvsroot/linux-vax/kernel-2.4/arch/vax/boot
In directory usw-pr-cvs1:/tmp/cvs-serv25353/arch/vax/boot
Modified Files:
Makefile cpu_sel.S head.S lib.S tmp_init.c
Log Message:
Bring forward all 2.2 work from before new year. This should give us
all a (somewhat) bootable kernel.
Index: Makefile
===================================================================
RCS file: /cvsroot/linux-vax/kernel-2.4/arch/vax/boot/Makefile,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- Makefile 2001/01/20 11:24:50 1.2
+++ Makefile 2001/01/26 00:27:00 1.3
@@ -18,6 +18,6 @@
all: head.o libboot.a
L_TARGET := libboot.a
-L_OBJS := tmp_init.o lib.o hexdump.o mmstart.o cpu_sel.o
+obj-y := tmp_init.o lib.o hexdump.o mmstart.o cpu_sel.o
include $(TOPDIR)/Rules.make
Index: cpu_sel.S
===================================================================
RCS file: /cvsroot/linux-vax/kernel-2.4/arch/vax/boot/cpu_sel.S,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- cpu_sel.S 2001/01/17 16:13:57 1.1
+++ cpu_sel.S 2001/01/26 00:27:00 1.2
@@ -142,6 +142,9 @@
cmpl $UVAX2_SID_SUBTYPE_KA410, r0
beql uvax2_ka410
+ cmpl $UVAX2_SID_SUBTYPE_CHARON, r0
+ beql uvax2_ka630
+
# Type E/I PR$_SID at console to get SID register value and report to
# lin...@mi...
.globl unsupported_uvax2
Index: head.S
===================================================================
RCS file: /cvsroot/linux-vax/kernel-2.4/arch/vax/boot/head.S,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- head.S 2001/01/17 16:13:57 1.1
+++ head.S 2001/01/26 00:27:00 1.2
@@ -84,9 +84,9 @@
#inside one chunk the data is moved bottom-to-top.
#Assumed that 1MB - load_address > 65535B otherwise
#it will break.
- movl $__init_data_end,r6
+ movl $__bss_start,r6
subl2 $start,r6 # byte count to r6
- movab __init_data_end,r1
+ movab __bss_start,r1
subl2 $0xffff, r1 # r1 points to top chunk of source
movl phys_start, r3 # dest address to r3
addl2 r6,r3
@@ -197,16 +197,12 @@
# longword aligned
addl3 $4, phys_kern_end, r5
bicl2 $3, r5
- movl r5, pg0 # save address of base of system page table
+ moval swapper_pg_dir, r0
+ movl r5, 16(r0) # save address of base of system page table
-# First entry in SPT is kept invalid to make a guard page (this speeds
-# up argument list validation in syscalls). It does mean that the first
-# page of physical RAM will be inaccessible. Oh well...
- clrl (r5)+
-
# Fill in the main part of the SPT (the entries that map physical
# memory)
- movl $1, r6 # pfn number
+ movl $0, r6 # pfn number
movl 76(r11), r7 # pfncnt from vmb.
sysfill:
bisl3 $_PAGE_VALID + _PAGE_UW, r6, (r5)+
@@ -226,8 +222,9 @@
blssu sparefill
# system page table is setup. Save SPT length and zap processor registers
- movl r7, spt_size
- mtpr pg0, $PR_SBR # set SBR
+ moval swapper_pg_dir, r0
+ movl r7, 20(r0)
+ mtpr 16(r0), $PR_SBR # set SBR
mtpr r7, $PR_SLR # set SLR
# no need to TBIA - memory mapping not enabled
moval msg_starting_vm, r10
@@ -235,7 +232,8 @@
jsb crlf
calls $0, VAX_start_mm
# made it
- addl2 $PAGE_OFFSET, pg0 # fix up our reference to the system page tbl.
+ moval swapper_pg_dir, r0
+ addl2 $PAGE_OFFSET, 16(r0) # fix up our reference to the system page tbl.
addl2 $PAGE_OFFSET, iomap_base # ... and the IOMAP PTEs
addl2 $PAGE_OFFSET, mv # fix up machine vector pointer
movl mv, r3
@@ -251,8 +249,23 @@
moval interrupt_stack, r0
addl2 $INT_STACK_SIZE, r0
movl r0, sp
+
+# Now that we have ISP (the interrupt stack pointer) sorted,
+# we need to move over to working on the kernel stack. We do this
+# my loading KSP with the top of the kernel stack for the 'init task'
+# and faking a saved PC/PSL on the interrupt stack which we then
+# 'return' to
+ moval init_task_union, r0
+ addl2 $8192, r0 # taken from <linux/sched.h>
+ mtpr r0,$PR_KSP
+
+ pushl $0x001f0000 # IS=0, accmode=prevmode=K, IPL=31
+ pushab now_on_kstack
+ rei
+ halt
- calls $0, tmp_start_kernel
+now_on_kstack:
+ calls $0, tmp_start_kernel # should never return
halt
msg_loaded:
@@ -316,12 +329,12 @@
# pg0 is the PHYSICAL ADDRESS of the system page table directory.
# This is immediately after the end of the bss section
# Once VM is enabled, this is replaced with the VIRTUAL address
-.globl pg0
-pg0: .int 0x00000000
+#.globl pg0
+#pg0: .int 0x00000000
# spt_size holds the length of the SPT (in entries, not bytes)
-.globl spt_size
-spt_size: .int 0x00000000
+#.globl spt_size
+#spt_size: .int 0x00000000
.globl phys_kern_end
phys_kern_end: .int 0x00000000
Index: lib.S
===================================================================
RCS file: /cvsroot/linux-vax/kernel-2.4/arch/vax/boot/lib.S,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- lib.S 2001/01/17 16:13:57 1.1
+++ lib.S 2001/01/26 00:27:00 1.2
@@ -5,93 +5,16 @@
.section .vaxbootlib
-// r2 contains ASCII code of character to print to console,
+# r2 contains ASCII code of character to print to console,
.globl boot_putchar
boot_putchar:
-# movl boot_putchar_func, r0
-# jmp (r0)
movl mv, r0
pushl r2
calls $1, *MV_PRE_VM_PUTCHAR(r0)
rsb
-// This will contain the address of a function that can be
-// used to print a char to the console before MM is setup
-// The actual function will be one of:
-//
-// putchar_prom
-// putchar_mtpr
-// putchar_nop
-
-boot_putchar_func:
- .long 0
-
-// Currently, the function is chosen by specifying an argument
-// to the BOOT command at the console. The lower 4 bits should
-// be one of:
-//
-// 1 use putchar_nop (do nothing for putchar)
-// 2 use putchar_mtpr
-// 3 use PROM routine at 20040058
-// 4 to 15 reserved
-//
-// A value of zero means use the compiled-in default.
-//
-// Eventually, the boot code will identify the CPU and choose
-// the correct one automatically. For now, head.S loads the
-// boot argument into R5 before calling this routine
-
-.globl select_boot_putchar
-select_boot_putchar:
-
- bicl2 $0xfffffff0, r5
- caseb r5, $0, $3
-$1:
- .word select_putchar_mtpr - $1 # tweak this to choose default
- .word select_putchar_nop - $1
- .word select_putchar_mtpr - $1
- .word select_putchar_prom - $1
-
- halt
-
-select_putchar_mtpr:
- moval putchar_mtpr, boot_putchar_func
- brb select_putchar_done
-
-select_putchar_prom:
- movl $0x20040058, boot_putchar_func
- brb select_putchar_done
-
-select_putchar_nop:
- moval putchar_nop, boot_putchar_func
-
-select_putchar_done:
- rsb
-
-putchar_nop:
- rsb
-
- .equ REGMASK_R8, 1<<8
- .equ REGMASK_R9, 1<<9
- .equ GC_V_RDY, 7
-
-.globl putchar_mtpr
-putchar_mtpr:
- movzbl r2, r2 # make sure high bytes are 0
- pushr $(REGMASK_R8 + REGMASK_R9) # save R8 and R9 on stack
- movl $10000, r8
-wait_for_ready:
- mfpr $PR_TXCS, r9 # PR_TXCS = 34
- bbs $GC_V_RDY, r9, tx_ready # GC_V_RDY is bit 7
- decl r8
- bneq wait_for_ready
-tx_ready:
- mtpr r2, $PR_TXDB
- popr $(REGMASK_R8 + REGMASK_R9) # restore R8 and R9
- rsb
-
-// print a long integer in hex. integer is in r10, uses r2 and r8
-//
+# print a long integer in hex. integer is in r10, uses r2 and r8
+#
.globl printint
printint:
clrl r8
@@ -113,9 +36,9 @@
cmpl r8,$0x04
bneq L1
rsb
-//
-// crlf
-//
+#
+# crlf
+#
.globl crlf
crlf:
clrl r2
@@ -124,10 +47,10 @@
movzbl $0x0D, r2
jsb boot_putchar
rsb
-//
-// printstr
-// inputs: Address of ascii string in r10
-//
+#
+# printstr
+# inputs: Address of ascii string in r10
+#
.globl printstr
printstr:
clrl r8
Index: tmp_init.c
===================================================================
RCS file: /cvsroot/linux-vax/kernel-2.4/arch/vax/boot/tmp_init.c,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- tmp_init.c 2001/01/17 16:13:57 1.1
+++ tmp_init.c 2001/01/26 00:27:00 1.2
@@ -21,9 +21,13 @@
#include <asm/mv.h>
#include <asm/scb.h>
#include <asm/system.h>
+#include <asm/smplock.h>
#include <linux/interrupt.h>
#include <linux/reboot.h>
+#include <linux/delay.h>
+#include <linux/iobuf.h>
+#include <linux/init.h>
#include <asm/bugs.h>
@@ -39,12 +43,23 @@
extern void buffer_init(unsigned long);
extern void page_cache_init(unsigned long);
extern void signals_init(void);
-extern void inode_init(void);
extern void file_table_init(void);
extern void ipc_init(void);
extern void dquot_init_hash(void);
+extern int bdflush(void *);
+extern int kupdate(void *);
+extern int kswapd(void *);
+extern int kpiod(void *);
+extern void kswapd_setup(void);
+extern void sock_init(void);
+extern void net_dev_init(void);
+extern void device_setup(void);
+extern void binfmt_setup(void);
+extern void filesystem_setup(void);
+extern void mount_root(void);
+extern void fork_init(unsigned long);
-extern int cpu_idle(void *);
+extern void cpu_idle(void);
/* stuff that is declared in head.S */
extern unsigned long int phys_start; /* physical address of kernel*/
@@ -60,11 +75,12 @@
way because we can't use sizeof() in assembly :-( */
unsigned int rpb_size = sizeof(struct rpb_struct);
-extern void setup_arch(char **, unsigned long *, unsigned long *);
-extern void trap_init(void );
-extern unsigned long console_init(unsigned long, unsigned long);
+extern void setup_arch(char **);
+extern void trap_init(void);
+extern void console_init(void);
extern char *linux_banner;
+extern struct task_struct *child_reaper;
static int tmp_init(void * unused);
@@ -85,9 +101,13 @@
void tmp_start_kernel(void)
{
char * command_line;
- unsigned long memory_start = 0;
- unsigned long memory_end = 0;
+ unsigned long mempages;
+/*
+ * Interrupts are still disabled. Do necessary setups, then
+ * enable them
+ */
+
/* Protect us from interrupt stack overflows */
guard_int_stack();
@@ -110,6 +130,7 @@
* enable them
*/
+ lock_kernel();
printk(linux_banner);
printk("RPB info: l_pfncnt: %08x, .l_vmb_version: %08x .l_badpgs: %08x\n",
@@ -118,33 +139,29 @@
printk("Physical memory: %08x pages (%dKB)\n",
boot_rpb.l_pfncnt, boot_rpb.l_pfncnt / 2);
- setup_arch(&command_line, &memory_start, &memory_end);
+ setup_arch(&command_line);
- printk("setup_arch returned: %08lx, %08lx\n", memory_start, memory_end);
printk("CPU type: %s, SID: %08x\n", mv->cpu_type_str(), vax_cpu.sid);
- memory_start = paging_init(memory_start,memory_end);
- printk("paging_init returned: %08lx\n", memory_start);
-
trap_init();
-
init_IRQ();
sched_init();
time_init();
+ softirq_init();
- memory_start = console_init(memory_start, memory_end);
+ console_init();
- memory_start = kmem_cache_init(memory_start, memory_end);
+ kmem_cache_init();
printk("Dropping IPL to 0 to allow clock interrupts\n");
- setipl(0);
+ sti();
calibrate_delay();
/* mem_init finishes up memory init. It places all remaining
memory on the free list */
- mem_init(memory_start,memory_end);
+ mem_init();
kmem_cache_sizes_init();
@@ -152,15 +169,16 @@
proc_root_init();
#endif
- uidcache_init();
- filescache_init();
- dcache_init();
- vma_init();
- buffer_init(memory_end-memory_start);
- page_cache_init(memory_end-memory_start);
+ mempages = num_physpages;
+
+ fork_init(mempages);
+ proc_caches_init();
+ vfs_caches_init(mempages);
+ buffer_init(mempages);
+ page_cache_init(mempages);
+ kiobuf_setup();
signals_init();
- inode_init();
- file_table_init();
+ inode_init(mempages);
#if defined(CONFIG_SYSVIPC)
ipc_init();
@@ -172,31 +190,79 @@
check_bugs();
printk("POSIX conformance testing by UNIFIX\n");
- if (mv->init_devices) {
- mv->init_devices();
- }
-
kernel_thread(tmp_init, NULL, CLONE_FS | CLONE_FILES | CLONE_SIGHAND);
+ unlock_kernel();
+
current->need_resched = 1;
- cpu_idle(NULL);
+ cpu_idle();
printk("\nThis is as far as we've got... - halting\n");
machine_halt();
}
-static int tmp_init(void * unused)
+static void __init do_initcalls(void)
{
- printk("tmp_init: in init thread\n");
+ initcall_t *call;
-#if defined(CONFIG_VSABUS)
- vsa_setup();
-#endif
+ call = &__initcall_start;
+ do {
+ (*call)();
+ call++;
+ } while (call < &__initcall_end);
+ /* Make sure there is no pending stuff from the initcall sequence */
+ flush_scheduled_tasks();
+}
+
+static void tmp_do_basic_setup(void)
+{
+ /*
+ * Tell the world that we're going to be the grim
+ * reaper of innocent orphaned children.
+ *
+ * We don't want people to have to make incorrect
+ * assumptions about where in the task array this
+ * can be found.
+ */
+ child_reaper = current;
+
+ if (mv->init_devices) {
+ mv->init_devices();
+ }
+
#if defined(CONFIG_NET)
sock_init();
net_dev_init();
#endif
+
+ device_setup();
+
+ start_context_thread();
+ do_initcalls();
+
+ /* .. filesystems .. */
+ filesystem_setup();
+
+ /* Mount the root filesystem.. */
+ mount_root();
+
+}
+
+static int tmp_init(void * unused)
+{
+ printk("tmp_init: in init thread\n");
+
+ tmp_do_basic_setup();
+
+#if 0
+ kernel_thread(bdflush, NULL, CLONE_FS | CLONE_FILES | CLONE_SIGHAND);
+ kernel_thread(kupdate, NULL, CLONE_FS | CLONE_FILES | CLONE_SIGHAND);
+ kswapd_setup();
+ kernel_thread(kpiod, NULL, CLONE_FS | CLONE_FILES | CLONE_SIGHAND);
+ kernel_thread(kswapd, NULL, CLONE_FS | CLONE_FILES | CLONE_SIGHAND);
+#endif
+
panic("No init found.");
}
|
|
From: Kenn H. <ke...@us...> - 2001-01-26 00:26:37
|
Update of /cvsroot/linux-vax/kernel-2.4 In directory usw-pr-cvs1:/tmp/cvs-serv25353 Modified Files: Makefile Rules.make Log Message: Bring forward all 2.2 work from before new year. This should give us all a (somewhat) bootable kernel. Index: Makefile =================================================================== RCS file: /cvsroot/linux-vax/kernel-2.4/Makefile,v retrieving revision 1.2 retrieving revision 1.3 diff -u -r1.2 -r1.3 --- Makefile 2001/01/17 16:00:11 1.2 +++ Makefile 2001/01/26 00:27:00 1.3 @@ -1,7 +1,7 @@ VERSION = 2 PATCHLEVEL = 4 SUBLEVEL = 0 -EXTRAVERSION = +EXTRAVERSION = -20010122 KERNELRELEASE=$(VERSION).$(PATCHLEVEL).$(SUBLEVEL)$(EXTRAVERSION) @@ -178,6 +178,7 @@ DRIVERS-$(CONFIG_PHONE) += drivers/telephony/telephony.o DRIVERS-$(CONFIG_ACPI) += drivers/acpi/acpi.o DRIVERS-$(CONFIG_MD) += drivers/md/mddev.o +DRIVERS-$(CONFIG_VSABUS) += drivers/vsbus/vsbus.a DRIVERS += $(DRIVERS-y) Index: Rules.make =================================================================== RCS file: /cvsroot/linux-vax/kernel-2.4/Rules.make,v retrieving revision 1.1.1.1 retrieving revision 1.2 diff -u -r1.1.1.1 -r1.2 --- Rules.make 2001/01/14 16:24:22 1.1.1.1 +++ Rules.make 2001/01/26 00:27:00 1.2 @@ -54,7 +54,7 @@ $(CPP) $(CFLAGS) $(EXTRA_CFLAGS) $(CFLAGS_$@) $< > $@ %.o: %.c - $(CC) $(CFLAGS) $(EXTRA_CFLAGS) $(CFLAGS_$@) -c -o $@ $< + $(CC) $(CFLAGS) $(EXTRA_CFLAGS) $(CFLAGS_$@) -c -o $@ $< -Wa,-adnhls=$*.lst -g @ ( \ echo 'ifeq ($(strip $(subst $(comma),:,$(CFLAGS) $(EXTRA_CFLAGS) $(CFLAGS_$@))),$$(strip $$(subst $$(comma),:,$$(CFLAGS) $$(EXTRA_CFLAGS) $$(CFLAGS_$@))))' ; \ echo 'FILES_FLAGS_UP_TO_DATE += $@' ; \ |
|
From: Kenn H. <ke...@us...> - 2001-01-26 00:17:20
|
Update of /cvsroot/linux-vax/kernel-2.4/include/linux In directory usw-pr-cvs1:/tmp/cvs-serv22956/include/linux Modified Files: .cvsignore Log Message: Fix up some .cvsignore files Index: .cvsignore =================================================================== RCS file: /cvsroot/linux-vax/kernel-2.4/include/linux/.cvsignore,v retrieving revision 1.1 retrieving revision 1.2 diff -u -r1.1 -r1.2 --- .cvsignore 2001/01/15 22:21:53 1.1 +++ .cvsignore 2001/01/26 00:17:42 1.2 @@ -2,3 +2,7 @@ *.o.flags .depend *.lst +modules +autoconf.h +version.h +compile.h |
|
From: Kenn H. <ke...@us...> - 2001-01-26 00:17:20
|
Update of /cvsroot/linux-vax/kernel-2.4/drivers/net/hamradio/soundmodem In directory usw-pr-cvs1:/tmp/cvs-serv22956/drivers/net/hamradio/soundmodem Modified Files: .cvsignore Log Message: Fix up some .cvsignore files Index: .cvsignore =================================================================== RCS file: /cvsroot/linux-vax/kernel-2.4/drivers/net/hamradio/soundmodem/.cvsignore,v retrieving revision 1.1 retrieving revision 1.2 diff -u -r1.1 -r1.2 --- .cvsignore 2001/01/15 22:21:52 1.1 +++ .cvsignore 2001/01/26 00:17:42 1.2 @@ -2,3 +2,11 @@ *.o.flags .depend *.lst +gentbl +sm_tbl_afsk1200.h +sm_tbl_afsk2666.h +sm_tbl_psk4800.h +sm_tbl_hapn4800.h +sm_tbl_fsk9600.h +sm_tbl_afsk2400_8.h +sm_tbl_afsk2400_7.h |
|
From: Kenn H. <ke...@us...> - 2001-01-26 00:17:20
|
Update of /cvsroot/linux-vax/kernel-2.4/drivers/vsbus In directory usw-pr-cvs1:/tmp/cvs-serv22956/drivers/vsbus Added Files: .cvsignore Log Message: Fix up some .cvsignore files --- NEW FILE --- *.a.flags *.o.flags .depend *.lst |
|
From: Kenn H. <ke...@us...> - 2001-01-26 00:17:20
|
Update of /cvsroot/linux-vax/kernel-2.4/scripts In directory usw-pr-cvs1:/tmp/cvs-serv22956/scripts Modified Files: .cvsignore Log Message: Fix up some .cvsignore files Index: .cvsignore =================================================================== RCS file: /cvsroot/linux-vax/kernel-2.4/scripts/.cvsignore,v retrieving revision 1.1 retrieving revision 1.2 diff -u -r1.1 -r1.2 --- .cvsignore 2001/01/15 22:21:53 1.1 +++ .cvsignore 2001/01/26 00:17:42 1.2 @@ -2,3 +2,5 @@ *.o.flags .depend *.lst +mkdep +split-include |
|
From: Kenn H. <ke...@us...> - 2001-01-24 00:07:25
|
Update of /cvsroot/linux-vax/kernel-2.4/include/asm-vax/mm
In directory usw-pr-cvs1:/tmp/cvs-serv32677/mm
Modified Files:
pgtable.h
Log Message:
Bring over latter 2.2 changes and a few fixes for 2.4
Index: pgtable.h
===================================================================
RCS file: /cvsroot/linux-vax/kernel-2.4/include/asm-vax/mm/pgtable.h,v
retrieving revision 1.3
retrieving revision 1.4
diff -C2 -r1.3 -r1.4
*** pgtable.h 2001/01/18 18:49:49 1.3
--- pgtable.h 2001/01/24 00:07:42 1.4
***************
*** 5,9 ****
#include <linux/config.h>
#include <linux/types.h>
- #endif /* !__ASSEMBLY__ */
#include <asm/mtpr.h>
--- 5,8 ----
***************
*** 11,14 ****
--- 10,14 ----
#include <asm/mm/virt_trans.h>
+ #endif /* !__ASSEMBLY__ */
/*
***************
*** 30,37 ****
--- 30,39 ----
#define flush_cache_page(vma, vmaddr) do { } while (0)
#define flush_page_to_ram(page) do { } while (0)
+ #define flush_dcache_page(page) do { } while (0)
/* Flushing the instruction cache is all-or-nothing on VAX. */
#define flush_icache_range(start, end) flush_icache()
+ #define flush_icache_page(vma, pg) flush_icache()
static inline void flush_icache(void)
***************
*** 57,66 ****
/* PMD_SHIFT determines the size of the area a second-level page table can map */
/* 128 * 512. 128 ptes/page */
! #define PMD_SHIFT 16
#define PMD_SIZE (1UL << PMD_SHIFT)
#define PMD_MASK (~(PMD_SIZE-1))
/* PGDIR_SHIFT determines what a third-level page table entry can map */
! #define PGDIR_SHIFT 16
#define PGDIR_SIZE (1UL << PGDIR_SHIFT)
#define PGDIR_MASK (~(PGDIR_SIZE-1))
--- 59,68 ----
/* PMD_SHIFT determines the size of the area a second-level page table can map */
/* 128 * 512. 128 ptes/page */
! #define PMD_SHIFT 30
#define PMD_SIZE (1UL << PMD_SHIFT)
#define PMD_MASK (~(PMD_SIZE-1))
/* PGDIR_SHIFT determines what a third-level page table entry can map */
! #define PGDIR_SHIFT 30
#define PGDIR_SIZE (1UL << PGDIR_SHIFT)
#define PGDIR_MASK (~(PGDIR_SIZE-1))
***************
*** 73,83 ****
#define PTRS_PER_PTE 128
#define PTRS_PER_PMD 1
! #define PTRS_PER_PGD 128
! /* fix this FIXME: */
! #define USER_PTRS_PER_PGD (TASK_SIZE/PGDIR_SIZE)
/*
* pgd entries used up by user/kernel:
*/
-
#define USER_PGD_PTRS (PAGE_OFFSET >> PGDIR_SHIFT)
#define KERNEL_PGD_PTRS (PTRS_PER_PGD-USER_PGD_PTRS)
--- 75,88 ----
#define PTRS_PER_PTE 128
#define PTRS_PER_PMD 1
! #define PTRS_PER_PGD 6 /* not actually real pointers. We store
! P0BR, P0LR, P1BR, P1LR, SBR and SLR
! in the PGD. SBR is stored here as a
! _virtual_ address, while the SBR
! processor hold a physical address */
! #define USER_PTRS_PER_PGD 4
!
/*
* pgd entries used up by user/kernel:
*/
#define USER_PGD_PTRS (PAGE_OFFSET >> PGDIR_SHIFT)
#define KERNEL_PGD_PTRS (PTRS_PER_PGD-USER_PGD_PTRS)
***************
*** 86,90 ****
#define FIRST_USER_PGD_NR 0
-
#define pte_ERROR(e) \
printk("%s:%d: bad pte %08lx.\n", __FILE__, __LINE__, pte_val(e))
--- 91,94 ----
***************
*** 122,126 ****
/* nb, this block assumes page_size 512 bytes. FIXME: */
! #define SPT_MAX_IOMAP 128
#define SPT_MAX_VMALLOC 4096
#define SPT_ENTRIES_IOMAP (SPT_MAX_IOMAP * 2)
--- 126,130 ----
/* nb, this block assumes page_size 512 bytes. FIXME: */
! #define SPT_MAX_IOMAP 1024
#define SPT_MAX_VMALLOC 4096
#define SPT_ENTRIES_IOMAP (SPT_MAX_IOMAP * 2)
***************
*** 204,219 ****
#ifndef __ASSEMBLY__
- /* page table for 0-4MB for everybody */
- /* This is a c reference to the start of the system page table
- * (see arch/vax/boot/head.S). The spt is initialised to cover physical
- * memory by early boot code, based on VMB supplied information. Further
- * expansion happens later in the boot sequence */
- extern pte_t *pg0;
-
- /* Number of SPTEs in system page table */
- extern unsigned int spt_size;
-
- /* zero page used for uninitialized stuff */
- /* extern unsigned long empty_zero_page[1024]; */
/*
--- 208,211 ----
***************
*** 229,233 ****
#define BAD_PAGETABLE __bad_pagetable()
#define BAD_PAGE __bad_page()
! #define ZERO_PAGE(vaddr) ((unsigned long) (PAGE_OFFSET+0x10800))
/* number of bits that fit into a memory pointer */
#define BITS_PER_PTR (8*sizeof(unsigned long))
--- 221,228 ----
#define BAD_PAGETABLE __bad_pagetable()
#define BAD_PAGE __bad_page()
!
! extern unsigned long empty_zero_page[PAGE_SIZE/sizeof(unsigned long)];
! #define ZERO_PAGE(vaddr) (virt_to_page(empty_zero_page))
!
/* number of bits that fit into a memory pointer */
#define BITS_PER_PTR (8*sizeof(unsigned long))
***************
*** 346,356 ****
! extern pgd_t swapper_pg_dir[1024];
/* copy_segments and friends now in system.h */
- #endif /* !__ASSEMBLY__ */
-
/* Needs to be defined here and not in linux/mm.h, as it is arch dependent
* This is used on sparc processors to implement memory holes */
--- 341,349 ----
! extern pgd_t swapper_pg_dir[PTRS_PER_PGD];
/* copy_segments and friends now in system.h */
/* Needs to be defined here and not in linux/mm.h, as it is arch dependent
* This is used on sparc processors to implement memory holes */
***************
*** 385,390 ****
--- 378,388 ----
#define swp_entry_to_pte(x) ((pte_t) { (x).val })
+ /* Memory sizing. You'll need to #include <asm/rpb.h> to get
+ the declaration of boot_rpb. */
+ #define max_pfn (boot_rpb.l_max_pfn)
+
#include <asm-generic/pgtable.h>
+ #endif /* !__ASSEMBLY__ */
|
|
From: Kenn H. <ke...@us...> - 2001-01-24 00:04:31
|
Update of /cvsroot/linux-vax/kernel-2.4/include/asm-vax/mm
In directory usw-pr-cvs1:/tmp/cvs-serv32032/mm
Modified Files:
pgcompat.h
Log Message:
Bring over latter 2.2 changes
Index: pgcompat.h
===================================================================
RCS file: /cvsroot/linux-vax/kernel-2.4/include/asm-vax/mm/pgcompat.h,v
retrieving revision 1.2
retrieving revision 1.3
diff -C2 -r1.2 -r1.3
*** pgcompat.h 2001/01/18 15:52:28 1.2
--- pgcompat.h 2001/01/24 00:04:48 1.3
***************
*** 28,32 ****
#include <asm/mm/vpage.h>
! #include <asm/mm/page.h> /* for pte_t */
#ifndef __ASSEMBLY__
--- 28,32 ----
#include <asm/mm/vpage.h>
! #include <asm/page.h> /* for pte_t */
#ifndef __ASSEMBLY__
***************
*** 45,50 ****
} vax_user_mm;
/* macro to get linear page table entry for a physical address */
! #define GET_SPTE_PHYS(x) (pg0 + ((x) >> PAGE_SHIFT))
/* macro to get linear page table entry for a virtual address
--- 45,53 ----
} vax_user_mm;
+ #define SPT_BASE ((pte_t*)(pgd_val(swapper_pg_dir[4])))
+ #define SPT_SIZE ((unsigned long)(pgd_val(swapper_pg_dir[5])))
+
/* macro to get linear page table entry for a physical address */
! #define GET_SPTE_PHYS(x) (SPT_BASE + ((x) >> PAGE_SHIFT))
/* macro to get linear page table entry for a virtual address
***************
*** 54,58 ****
/* macro to get the virtual address represented by an SPTE, given the
address of the SPTE */
! #define SPTE_TO_VIRT(p) (void *)((((pte_t*)(p) - (pte_t*)pg0) << PAGE_SHIFT) + 0x80000000)
// Temporary dumping ground.
--- 57,61 ----
/* macro to get the virtual address represented by an SPTE, given the
address of the SPTE */
! #define SPTE_TO_VIRT(p) (void *)(( ((p) - SPT_BASE) << PAGE_SHIFT) + 0x80000000)
// Temporary dumping ground.
|
|
From: Kenn H. <ke...@us...> - 2001-01-23 23:58:41
|
Update of /cvsroot/linux-vax/kernel-2.4/include/asm-vax
In directory usw-pr-cvs1:/tmp/cvs-serv30800
Modified Files:
vsa.h
Log Message:
Bring over latter 2.2 changes
Index: vsa.h
===================================================================
RCS file: /cvsroot/linux-vax/kernel-2.4/include/asm-vax/vsa.h,v
retrieving revision 1.1
retrieving revision 1.2
diff -C2 -r1.1 -r1.2
*** vsa.h 2001/01/17 16:18:52 1.1
--- vsa.h 2001/01/23 23:58:58 1.2
***************
*** 1,2 ****
--- 1,6 ----
+ /*
+ * $Id$
+ */
+
#ifndef _ASM_VAX_VSA_H
#define _ASM_VAX_VSA_H
***************
*** 10,14 ****
--- 14,25 ----
unsigned char vc_vdcsel; /* Video interrupt select */
unsigned char vc_intreq; /* Interrupt request register */
+ unsigned char vc_intclr; /* Interrupt acknowledge register */
};
+
+ extern int vsa_setup(void);
+ extern int vsa_enable_int(int bit_nr);
+ extern int vsa_clear_int(int bit_nr);
+ extern int vsa_probe_irq(void);
+
#define VSA_BASE_REGS 0x20080000
|
|
From: Kenn H. <ke...@us...> - 2001-01-23 23:56:49
|
Update of /cvsroot/linux-vax/kernel-2.4/include/asm-vax In directory usw-pr-cvs1:/tmp/cvs-serv30629 Modified Files: vaxcpu.h Log Message: Add definition for CHARON-VAX emulator CPU type Index: vaxcpu.h =================================================================== RCS file: /cvsroot/linux-vax/kernel-2.4/include/asm-vax/vaxcpu.h,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -r1.1 -r1.2 *** vaxcpu.h 2001/01/17 16:18:52 1.1 --- vaxcpu.h 2001/01/23 23:57:07 1.2 *************** *** 113,116 **** --- 113,117 ---- #define UVAX2_SID_SUBTYPE_SIZE 8 + #define UVAX2_SID_SUBTYPE_CHARON 0 /* CHARON-VAX MicroVAX II emulator */ #define UVAX2_SID_SUBTYPE_KA630 1 /* MicroVAX II, VAXstation II */ #define UVAX2_SID_SUBTYPE_KA410 4 /* MicroVAX 2000, VAXstation 2000 */ |
|
From: Kenn H. <ke...@us...> - 2001-01-23 23:56:08
|
Update of /cvsroot/linux-vax/kernel-2.4/include/asm-vax
In directory usw-pr-cvs1:/tmp/cvs-serv30556
Modified Files:
unistd.h
Log Message:
Bring over latter 2.2 changes
Index: unistd.h
===================================================================
RCS file: /cvsroot/linux-vax/kernel-2.4/include/asm-vax/unistd.h,v
retrieving revision 1.1
retrieving revision 1.2
diff -C2 -r1.1 -r1.2
*** unistd.h 2001/01/17 16:18:52 1.1
--- unistd.h 2001/01/23 23:56:25 1.2
***************
*** 356,359 ****
--- 356,371 ----
#ifdef __KERNEL_SYSCALLS__
+ /* This _must_ be inlined so that it picks up the correct AP value
+ from the caller */
+ static inline int __chmk(unsigned int syscall)
+ {
+ register int retval __asm__("r0");
+ __asm__("chmk %0"
+ : /* implicit output in r0 */
+ : "g"(syscall)
+ : "r0", "r1");
+ return retval;
+ }
+
/*
* we need this inline - forking from kernel space will result
***************
*** 372,380 ****
#include <linux/signal.h>
! extern void sys_idle(void);
! static inline void idle(void)
{
! sys_idle();
}
--- 384,394 ----
#include <linux/signal.h>
+
+ extern pid_t kernel_thread(int (*fn)(void *), void *arg, unsigned long flags);
! extern int sys_idle(void);
! static inline int idle(void)
{
! return sys_idle();
}
|
|
From: Kenn H. <ke...@us...> - 2001-01-23 23:55:40
|
Update of /cvsroot/linux-vax/kernel-2.4/include/asm-vax
In directory usw-pr-cvs1:/tmp/cvs-serv30466
Modified Files:
system.h
Log Message:
Bring over latter 2.2 changes
Index: system.h
===================================================================
RCS file: /cvsroot/linux-vax/kernel-2.4/include/asm-vax/system.h,v
retrieving revision 1.2
retrieving revision 1.3
diff -C2 -r1.2 -r1.3
*** system.h 2001/01/18 15:52:28 1.2
--- system.h 2001/01/23 23:55:57 1.3
***************
*** 14,18 ****
! /* FIXME: process context switch */
/*
--- 14,18 ----
! #include <asm/psl.h>
/*
***************
*** 39,43 ****
#define switch_to(prev,next,last) \
do { \
! (last) = vax_switch_to((prev), (next)); \
} while (0)
--- 39,47 ----
#define switch_to(prev,next,last) \
do { \
! if ((prev) == (next)) { \
! (last) = (prev); \
! } else { \
! (last) = vax_switch_to((prev), (next)); \
! } \
} while (0)
***************
*** 53,59 ****
* Force strict CPU ordering. Stubbed out FIXME:
*/
! #define mb() __asm__ __volatile__("nop": : :"memory")
! #define rmb() asm volatile ("" : : :"memory")
! #define wmb() asm volatile ("" : : :"memory")
#define set_mb(var, value) do { xchg(&var, value); } while (0)
#define set_wmb(var, value) do { var = value; wmb(); } while (0)
--- 57,63 ----
* Force strict CPU ordering. Stubbed out FIXME:
*/
! #define mb() __asm__ __volatile__("": : :"memory")
! #define rmb() mb()
! #define wmb() mb()
#define set_mb(var, value) do { xchg(&var, value); } while (0)
#define set_wmb(var, value) do { var = value; wmb(); } while (0)
***************
*** 78,82 ****
#define __cli() setipl(31)
! #define __sti() setipl(0)
#define __save_flags(flags) ((flags) = getipl())
#define __save_and_cli(flags) ((flags) = swpipl(31))
--- 82,106 ----
#define __cli() setipl(31)
!
! /* If we're handling an interrupt (i.e. the IS bit is set in the
! PSL and we're on the interrupt stack), then we must not enable
! interrupts by dropping IPL all the way to 0. If we do, and
! another interrupt comes in, then this second interrupt will
! be handled normally, but will REI to a PSL with IS set and
! an IPL of 0, which REI doesn't like at all.
!
! So, instead, we drop IPL to 1 if we're running on the interrupt
! stack, thus making sure that REI will be kept happy. */
!
! extern __inline__ void
! __sti(void)
! {
! if (__psl.is) {
! setipl(1);
! } else {
! setipl(0);
! }
! }
!
#define __save_flags(flags) ((flags) = getipl())
#define __save_and_cli(flags) ((flags) = swpipl(31))
|
|
From: Kenn H. <ke...@us...> - 2001-01-23 23:54:55
|
Update of /cvsroot/linux-vax/kernel-2.4/include/asm-vax
In directory usw-pr-cvs1:/tmp/cvs-serv30383
Modified Files:
softirq.h
Log Message:
Need GCC optimisation barriers here, not memory write/read barriers
Index: softirq.h
===================================================================
RCS file: /cvsroot/linux-vax/kernel-2.4/include/asm-vax/softirq.h,v
retrieving revision 1.1
retrieving revision 1.2
diff -C2 -r1.1 -r1.2
*** softirq.h 2001/01/17 16:18:52 1.1
--- softirq.h 2001/01/23 23:55:13 1.2
***************
*** 9,18 ****
{
local_bh_count(cpu)++;
! mb();
}
extern inline void cpu_bh_enable(int cpu)
{
! mb();
local_bh_count(cpu)--;
}
--- 9,18 ----
{
local_bh_count(cpu)++;
! barrier();
}
extern inline void cpu_bh_enable(int cpu)
{
! barrier();
local_bh_count(cpu)--;
}
|
|
From: Kenn H. <ke...@us...> - 2001-01-23 23:54:12
|
Update of /cvsroot/linux-vax/kernel-2.4/include/asm-vax
In directory usw-pr-cvs1:/tmp/cvs-serv30266
Modified Files:
rpb.h
Log Message:
Need a declaration for the boot-time RPB
Index: rpb.h
===================================================================
RCS file: /cvsroot/linux-vax/kernel-2.4/include/asm-vax/rpb.h,v
retrieving revision 1.1
retrieving revision 1.2
diff -C2 -r1.1 -r1.2
*** rpb.h 2001/01/17 16:18:52 1.1
--- rpb.h 2001/01/23 23:54:29 1.2
***************
*** 76,80 ****
longword l_vmb_version; /* vmb version number (uvax VMB's) */
};
!
#endif _VAX_RPB_H
--- 76,81 ----
longword l_vmb_version; /* vmb version number (uvax VMB's) */
};
!
! extern struct rpb_struct boot_rpb;
#endif _VAX_RPB_H
|
|
From: Kenn H. <ke...@us...> - 2001-01-23 23:50:01
|
Update of /cvsroot/linux-vax/kernel-2.4/include/asm-vax
In directory usw-pr-cvs1:/tmp/cvs-serv29771
Modified Files:
processor.h
Log Message:
Removed some obsoleted crud
Index: processor.h
===================================================================
RCS file: /cvsroot/linux-vax/kernel-2.4/include/asm-vax/processor.h,v
retrieving revision 1.5
retrieving revision 1.6
diff -C2 -r1.5 -r1.6
*** processor.h 2001/01/22 16:46:55 1.5
--- processor.h 2001/01/23 23:50:19 1.6
***************
*** 26,35 ****
- /* cons_types */
- #define CONS_MTPR 1 /* big vaxes */
- #define CONS_PROM 2 /* uvaxes no mapen */
- #define CONS_DC7085 3 /* uvaxes mapen */
- #define CONS_FB 4 /* not implemented yet */
-
/*
* * User space process size: 2GB (default).
--- 26,29 ----
***************
*** 75,90 ****
PAGE_SHARED, VM_READ | VM_WRITE | VM_EXEC, 1, NULL, NULL }
-
- /* FIXME: */
- #define INIT_TSS { \
- /* pcb */ { 0 }, \
- /* flags */ 0, \
- /* fs */ KERNEL_DS, \
- /* bpt_addr */ { 0, 0 }, \
- /* bpt_insn */ { 0, 0 }, \
- /* bpt_nsaved */ 0 \
- }
-
-
#include <asm/ptrace.h>
--- 69,72 ----
|
|
From: Kenn H. <ke...@us...> - 2001-01-23 23:49:31
|
Update of /cvsroot/linux-vax/kernel-2.4/include/asm-vax
In directory usw-pr-cvs1:/tmp/cvs-serv29709
Modified Files:
psl.h
Log Message:
Fixed this in 2.2 ages ago...
Index: psl.h
===================================================================
RCS file: /cvsroot/linux-vax/kernel-2.4/include/asm-vax/psl.h,v
retrieving revision 1.1
retrieving revision 1.2
diff -C2 -r1.1 -r1.2
*** psl.h 2001/01/17 16:18:52 1.1
--- psl.h 2001/01/23 23:49:48 1.2
***************
*** 61,67 ****
#define __psl ({ \
! struct psl_fields *p; \
__asm__ volatile ("movpsl %0" : "=g" (p) : ); \
! *p; \
})
--- 61,67 ----
#define __psl ({ \
! struct psl_fields p; \
__asm__ volatile ("movpsl %0" : "=g" (p) : ); \
! p; \
})
|
|
From: Kenn H. <ke...@us...> - 2001-01-23 23:48:18
|
Update of /cvsroot/linux-vax/kernel-2.4/include/asm-vax
In directory usw-pr-cvs1:/tmp/cvs-serv29563
Modified Files:
pcb.h
Log Message:
Correct PCB structure definition and simplify INIT_PCB initializer
Index: pcb.h
===================================================================
RCS file: /cvsroot/linux-vax/kernel-2.4/include/asm-vax/pcb.h,v
retrieving revision 1.2
retrieving revision 1.3
diff -C2 -r1.2 -r1.3
*** pcb.h 2001/01/22 16:46:55 1.2
--- pcb.h 2001/01/23 23:48:35 1.3
***************
*** 2,11 ****
#define _VAX_PCB_H
/* process control block structure */
/* Copyright atp 1998. For Linux/Vax. */
/* reference: VAX Hardware Manual pg 260 */
- /* FIXME: sort out p0br and p1br subfields */
-
struct vax_pcb {
unsigned long int ksp;
--- 2,11 ----
#define _VAX_PCB_H
+ #include <asm/psl.h>
+
/* process control block structure */
/* Copyright atp 1998. For Linux/Vax. */
/* reference: VAX Hardware Manual pg 260 */
struct vax_pcb {
unsigned long int ksp;
***************
*** 24,65 ****
unsigned long int r9;
unsigned long int r10;
! unsigned long int r11; /* note this is used in current.h */
unsigned long int ap;
unsigned long int fp;
unsigned long int pc;
! unsigned long int psl;
unsigned long int p0br;
! unsigned long int p0lr; /* bits 0:21. astlvl is bits 24:26 */
unsigned long int p1br;
! unsigned long int p1lr; /* pme is bit 31 */
};
! /* Process control block initialiser used in INIT_THREAD*/
! #define INIT_PCB { \
! ksp: 0, \
! esp: 0, \
! ssp: 0, /* null ? */ \
! usp: 0, \
! r0: 0, \
! r1: 0, \
! r2: 0, \
! r3: 0, \
! r4: 0, \
! r5: 0, \
! r6: 0, \
! r7: 0, \
! r8: 0, \
! r9: 0, \
! r10: 0, \
! r11: 0, \
! ap: 0, \
! fp: 0, \
! pc: 0, \
! psl: 0, \
! p0br: 0, \
! p0lr: 0, /* bits 0:21. astlvl is bits 24:26 */ \
! p1br: 0, \
! p1lr: 0 /* pme is bit 31 *: */ \
! }
#endif /* _VAX_PCB_H */
--- 24,46 ----
unsigned long int r9;
unsigned long int r10;
! unsigned long int r11;
unsigned long int ap;
unsigned long int fp;
unsigned long int pc;
! struct psl_fields psl;
unsigned long int p0br;
! unsigned long int p0lr:22;
! unsigned long int mbz1:2; /* reserved, MBZ */
! unsigned long int astlvl:3;
! unsigned long int mbz2:5; /* reserved, MBZ */
unsigned long int p1br;
! unsigned long int p1lr;
! unsigned long int mbz3:7; /* reserved, MBZ */
! unsigned long int pme:1;
};
+
+ /* Process control block initialiser used in INIT_THREAD */
! #define INIT_PCB { 0 } /* fill complete structure with zeroes */
#endif /* _VAX_PCB_H */
|
|
From: Kenn H. <ke...@us...> - 2001-01-23 23:46:55
|
Update of /cvsroot/linux-vax/kernel-2.4/include/asm-vax In directory usw-pr-cvs1:/tmp/cvs-serv29425 Added Files: ipc.h Log Message: Based on s390 --- NEW FILE --- /* * $Id: ipc.h,v 1.1 2001/01/23 23:47:13 kenn Exp $ * * VAX version * * Derived from "include/asm-s390/ipc.h" */ #ifndef __VAX_IPC_H__ #define __VAX_IPC_H__ #define SEMOP 1 #define SEMGET 2 #define SEMCTL 3 #define MSGSND 11 #define MSGRCV 12 #define MSGGET 13 #define MSGCTL 14 #define SHMAT 21 #define SHMDT 22 #define SHMGET 23 #define SHMCTL 24 /* Used by the DIPC package, try and avoid reusing it */ #define DIPC 25 #endif |