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 |