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: Andy P. <at...@us...> - 2001-02-15 01:26:18
|
Update of /cvsroot/linux-vax/kernel-2.4/arch/vax/kernel In directory usw-pr-cvs1:/tmp/cvs-serv31452/kernel Modified Files: cpu_ka46.c interrupt.c setup.c Log Message: pagelet updates, MM updates. shot 9 Index: cpu_ka46.c =================================================================== RCS file: /cvsroot/linux-vax/kernel-2.4/arch/vax/kernel/cpu_ka46.c,v retrieving revision 1.1 retrieving revision 1.2 diff -u -r1.1 -r1.2 --- cpu_ka46.c 2001/01/17 16:13:57 1.1 +++ cpu_ka46.c 2001/02/15 01:26:58 1.2 @@ -74,8 +74,8 @@ void ka46_post_vm_init(void) { init_dz11_console(0x200A0000, 3); - dz_serial_console_init(0, 0); + asm("halt"); } const char *ka46_cpu_type_str(void) Index: interrupt.c =================================================================== RCS file: /cvsroot/linux-vax/kernel-2.4/arch/vax/kernel/interrupt.c,v retrieving revision 1.5 retrieving revision 1.6 diff -u -r1.5 -r1.6 --- interrupt.c 2001/01/29 00:56:19 1.5 +++ interrupt.c 2001/02/15 01:26:58 1.6 @@ -22,9 +22,9 @@ #include "interrupt.h" /* Local, private definitions */ -unsigned char __attribute((__aligned__(VPAGE_SIZE))) interrupt_stack[NR_CPUS][INT_STACK_SIZE]; +unsigned char __attribute((__aligned__(PAGE_SIZE))) interrupt_stack[NR_CPUS][INT_STACK_SIZE]; -union scb_and_device_vectors __attribute((__aligned__(VPAGE_SIZE))) scb; +union scb_and_device_vectors __attribute((__aligned__(PAGE_SIZE))) scb; /* Statically-defined pool of irqvector structures. This will go once we have a working kmalloc()/kfree(). @@ -48,22 +48,34 @@ void guard_int_stack(void) { - pte_t *p; - - if (INT_STACK_SIZE <= VPAGE_SIZE) { - printk("Interrupt stack too small, must be > VPAGE_SIZE\n"); + pte_t p, *q; + unsigned char *t, *s; + t = &interrupt_stack[0]; + s = SPT_BASE; + /* Do we need more than a page for the int stack? */ + if (INT_STACK_SIZE < PAGE_SIZE) { + printk("Interrupt stack too small, must be > PAGE_SIZE\n"); machine_halt(); } - - p = GET_SPTE_VIRT(interrupt_stack[smp_processor_id()]); + /* FIXME: kenn - does this want to be a 4k page or a hardware page ? */ + /* see include/asm/mm/pgtable.h */ +/* q = (((unsigned long) &interrupt_stack[smp_processor_id()])-PAGE_OFFSET)>>PAGELET_SHIFT;*/ + q = GET_HWSPTE_VIRT(&interrupt_stack[smp_processor_id()]); /* Set first page of interrupt stack area to kernel read, thus trapping any writes to this page. This will catch attempts to expand the interrupt stack before they can do any damage. */ - pte_val(*p) &= ~PAGE_PROT_MASK; - pte_val(*p) |= _PAGE_KR; + /* if this is a 4k page - need to use set_pte here */ + p = mk_pte(&interrupt_stack[smp_processor_id()],__pgprot(_PAGE_KR|_PAGE_VALID)); +/* debug hwpte calculations FIXME: remove */ +/* asm("movl %0, r2\n" + "movl %1 ,r3\n" + "movl %2 ,r4\n" + "halt" : : "g"(q), "g"(t), "g"(s) ); */ + set_pte(q, p); + __flush_tlb_one(interrupt_stack[smp_processor_id()]); } Index: setup.c =================================================================== RCS file: /cvsroot/linux-vax/kernel-2.4/arch/vax/kernel/setup.c,v retrieving revision 1.3 retrieving revision 1.4 diff -u -r1.3 -r1.4 --- setup.c 2001/01/29 00:58:11 1.3 +++ setup.c 2001/02/15 01:26:58 1.4 @@ -14,9 +14,11 @@ #include <linux/bootmem.h> #include <linux/init.h> #include <linux/string.h> +#include <linux/delay.h> #include <asm/rpb.h> #include <asm/page.h> +#include <asm/mv.h> #define COMMAND_LINE_SIZE 256 @@ -29,6 +31,28 @@ /* Linker will put this at the end of the kernel image */ extern char _end; +/* + * BUFFER is PAGE_SIZE bytes long. + */ +int get_cpuinfo(char *buffer) +{ + int len; + + len = sprintf(buffer, "cpu\t\t\t: VAX\n" + "cpu type\t\t: %s\n" + "cpu sidex\t\t: %d\n" + "page size\t\t: %ld\n" + "BogoMIPS\t\t: %lu.%02lu\n", + (char *)mv->cpu_type_str, + /* mv->sidex */ + 0x0, + PAGE_SIZE, + loops_per_jiffy / (500000/HZ), + (loops_per_jiffy / (5000/HZ)) % 100); + return len; +} + + void __init setup_arch(char **cmdline_p) { unsigned long bootmap_size; @@ -71,6 +95,7 @@ memset(¤t->thread.pcb, 0, sizeof(current->thread.pcb)); current->thread.pcb.astlvl = 4; + /* swapper_pg_dir is a 4 x pgd_t array */ SET_PAGE_DIR(current, swapper_pg_dir); /* No root filesystem yet */ |
From: Andy P. <at...@us...> - 2001-02-15 01:26:18
|
Update of /cvsroot/linux-vax/kernel-2.4/arch/vax/mm In directory usw-pr-cvs1:/tmp/cvs-serv31452/mm Modified Files: init.c ioremap.c pgtable.c Log Message: pagelet updates, MM updates. shot 9 Index: init.c =================================================================== RCS file: /cvsroot/linux-vax/kernel-2.4/arch/vax/mm/init.c,v retrieving revision 1.4 retrieving revision 1.5 diff -u -r1.4 -r1.5 --- init.c 2001/02/05 00:06:11 1.4 +++ init.c 2001/02/15 01:26:58 1.5 @@ -16,7 +16,9 @@ static unsigned long totalram_pages; -unsigned long empty_zero_page[PAGE_SIZE/sizeof(unsigned long)] __attribute__ ((__aligned__ (PAGE_SIZE))); +unsigned long empty_zero_page[PAGE_SIZE / + sizeof(unsigned long)] + __attribute__ ((__aligned__(PAGE_SIZE))); #ifndef CONFIG_SMP struct pgtable_cache_struct quicklists; @@ -35,81 +37,126 @@ * In other architectures, paging_init sets up the kernel's page tables. * In Linux/VAX, this is already done by the early boot code. */ -void __init -paging_init() +void __init paging_init() { - unsigned long zones_size[MAX_NR_ZONES] = { 0, 0, 0}; + unsigned long zones_size[MAX_NR_ZONES] = { 0, 0, 0 }; - zones_size[ZONE_DMA] = max_pfn; - free_area_init(zones_size); + zones_size[ZONE_DMA] = max_pfn; + free_area_init(zones_size); } #if DEBUG_POISON -static void -kill_page(unsigned long pg) +static void kill_page(unsigned long pg) { - unsigned long *p = (unsigned long *)pg; - unsigned long i = PAGE_SIZE, v = 0xdeadbeefdeadbeef; - do { - p[0] = v; - p[1] = v; - p[2] = v; - p[3] = v; - p[4] = v; - p[5] = v; - p[6] = v; - p[7] = v; - i -= 64; - p += 8; - } while (i != 0); + unsigned long *p = (unsigned long *) pg; + unsigned long i = PAGE_SIZE, v = 0xdeadbeefdeadbeef; + do { + p[0] = v; + p[1] = v; + p[2] = v; + p[3] = v; + p[4] = v; + p[5] = v; + p[6] = v; + p[7] = v; + i -= 64; + p += 8; + } while (i != 0); } #else #define kill_page(pg) #endif -void -mem_init(void) +void mem_init(void) { - max_mapnr = num_physpages = max_low_pfn; + max_mapnr = num_physpages = max_low_pfn; - /* this will put all low memory onto the freelists */ - totalram_pages += free_all_bootmem(); + /* this will put all low memory onto the freelists */ + totalram_pages += free_all_bootmem(); - high_memory = (void *) __va(max_low_pfn * PAGE_SIZE); + high_memory = (void *) __va(max_low_pfn * PAGE_SIZE); - printk("Memory: %luk/%luk available\n", - (unsigned long) nr_free_pages() / 2, - max_mapnr / 2 - ); + printk("Memory: %luk/%luk available\n", + (unsigned long) nr_free_pages() / 2, max_mapnr / 2); - return; + return; } -void -free_initmem (void) +void free_initmem(void) { - extern char __init_begin, __init_end; - unsigned long addr; + extern char __init_begin, __init_end; + unsigned long addr; - addr = (unsigned long)(&__init_begin); - for (; addr < (unsigned long)(&__init_end); addr += PAGE_SIZE) { - mem_map[MAP_NR(addr)].flags &= ~(1 << PG_reserved); - atomic_set(&mem_map[MAP_NR(addr)].count, 1); - kill_page(addr); - free_page(addr); - } - printk ("Freeing unused kernel memory: %dk freed\n", - (&__init_end - &__init_begin) >> 10); + addr = (unsigned long) (&__init_begin); + for (; addr < (unsigned long) (&__init_end); addr += PAGE_SIZE) { + mem_map[MAP_NR(addr)].flags &= ~(1 << PG_reserved); + atomic_set(&mem_map[MAP_NR(addr)].count, 1); + kill_page(addr); + free_page(addr); + } + printk("Freeing unused kernel memory: %dk freed\n", + (&__init_end - &__init_begin) >> 10); } void si_meminfo(struct sysinfo *val) { - val->totalram = totalram_pages; - val->sharedram = 0; - val->freeram = nr_free_pages(); - val->bufferram = atomic_read(&buffermem_pages); - val->totalhigh = 0; - val->freehigh = 0; - val->mem_unit = PAGE_SIZE; - return; + val->totalram = totalram_pages; + val->sharedram = 0; + val->freeram = nr_free_pages(); + val->bufferram = atomic_read(&buffermem_pages); + val->totalhigh = 0; + val->freehigh = 0; + val->mem_unit = PAGE_SIZE; + return; } + +/* page table stuff */ + +/* get_pte_kernel_slow. allocate a page of PTEs for the S0 pagetable. + * See comments in include/asm/mm/pgalloc.h for get_pte_kernel. + */ +pte_t *get_pte_kernel_slow(pmd_t * pmd, unsigned long address) +{ + return (pte_t *) NULL; +} + +/* just want a page here - quite simple */ +pte_t *get_pte_slow(pmd_t * pmd, unsigned long address) +{ + unsigned long pte; + + pte = (unsigned long) __get_free_page(GFP_KERNEL); + + if (pte) { + return (pte_t *) pte; + } else { + return NULL; + } + return NULL; +} + +/* remap a given page to be part of a contiguous page table for p0/1 space */ +void remap_and_clear_pte_page(pgd_t *pagetable, pte_t *page, unsigned long pte_page) +{ + unsigned long page_physical_address, page_virtual_address; + pte_t *S0pte; + pte_t tpte; + + /* zero out these pte's */ + clear_page((void *) page); + + /* page addresses */ + page_physical_address = __pa(page); + page_virtual_address = (pte_page * PAGE_SIZE) + pagetable->br; + + /* S0 pte entry for this virtual address */ + S0pte = ((page_virtual_address - PAGE_OFFSET) >> PAGE_SHIFT)+swapper_pg_dir; + + /* FIXME: what if the page is already mapped? (TASK_SIZE) */ + pte_clear(S0pte); + tpte = mk_pte_phys((void*)page_physical_address,(pgprot_t)PAGE_KERNEL); + set_pte(S0pte, tpte); + return; +} + + Index: ioremap.c =================================================================== RCS file: /cvsroot/linux-vax/kernel-2.4/arch/vax/mm/ioremap.c,v retrieving revision 1.2 retrieving revision 1.3 diff -u -r1.2 -r1.3 --- ioremap.c 2001/01/26 00:27:00 1.2 +++ ioremap.c 2001/02/15 01:26:58 1.3 @@ -71,12 +71,12 @@ pte_t *p; /* Page align the physical addresses */ - phys_start = VPAGE_ALIGN_PREV(phys_addr); + phys_start = PAGE_ALIGN_PREV(phys_addr); offset = phys_addr - phys_start; - phys_end = VPAGE_ALIGN(phys_addr + size); + phys_end = PAGE_ALIGN(phys_addr + size); - num_ptes = (phys_end - phys_start) >> VPAGE_SHIFT; + num_ptes = (phys_end - phys_start) >> PAGE_SHIFT; start_pte = NULL; p = iomap_base; @@ -114,10 +114,8 @@ virt_start = SPTE_TO_VIRT(start_pte); for (i = 0; i < num_ptes; i++) { - pte_val(start_pte[i]) = _PAGE_VALID | _PAGE_KW | - (((phys_start>>VPAGE_SHIFT) + i) & _PFN_MASK); - - __flush_tlb_one(virt_start + (i<<VPAGE_SHIFT)); + set_pte( (pte_t *)start_pte++, mk_pte((phys_start+(i*PAGE_SHIFT)),__pgprot(_PAGE_VALID | _PAGE_KW))); + __flush_tlb_one(virt_start + (i<<PAGELET_SHIFT)); } printk("IO mapped phys addr 0x%08lx, 0x%04x pages at virt 0x%08lx (IOMAP PTE index 0x%04x)\n", @@ -137,7 +135,7 @@ return; } - p = GET_SPTE_VIRT(addr); + p = GET_HWSPTE_VIRT(addr); if ((p < iomap_base) && (p >= (iomap_base + SPT_ENTRIES_IOMAP))) { printk("iounmap: virtual addr 0x%08lx not in IOMAP region\n", @@ -163,7 +161,7 @@ p++; __flush_tlb_one(addr); - addr += VPAGE_SIZE; + addr += PAGELET_SIZE; } } Index: pgtable.c =================================================================== RCS file: /cvsroot/linux-vax/kernel-2.4/arch/vax/mm/pgtable.c,v retrieving revision 1.2 retrieving revision 1.3 diff -u -r1.2 -r1.3 --- pgtable.c 2001/01/26 00:27:00 1.2 +++ pgtable.c 2001/02/15 01:26:58 1.3 @@ -9,13 +9,14 @@ #include <asm/pgalloc.h> +/* Note the factor of 8 in the length registers */ void set_page_dir(struct task_struct * tsk, pgd_t * pgdir) { /* 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]); + tsk->thread.pcb.p0br = (pgdir[0]).br; + tsk->thread.pcb.p0lr = (pgdir[0]).lr * 8; + tsk->thread.pcb.p1br = (pgdir[1]).br; + tsk->thread.pcb.p1lr = (pgdir[1]).lr * 8; /* now if this is the currently running task, up date the registers */ /* This doesnt sound like a great idea... perhaps setipl(31) would @@ -27,6 +28,14 @@ __mtpr(tsk->thread.pcb.p1lr, PR_P1LR ); flush_tlb_all(); } +} + +/* Note the factor of 8 in the length registers */ +void set_page_dir_kernel(pgd_t * pgdir) +{ + __mtpr( (pgdir[3]).br, PR_SBR); + __mtpr( (pgdir[3]).lr, PR_SLR); + flush_tlb_all(); } int do_check_pgt_cache(int low_water, int high_water) |
From: Andy P. <at...@us...> - 2001-02-15 01:21:08
|
Update of /cvsroot/linux-vax/kernel-2.4/include/asm-vax/mm In directory usw-pr-cvs1:/tmp/cvs-serv31075 Removed Files: virt_trans.h vpage.h pgjunk.h Log Message: pagelet updates, mm updates, shot 7 --- virt_trans.h DELETED --- --- vpage.h DELETED --- --- pgjunk.h DELETED --- |
From: Andy P. <at...@us...> - 2001-02-15 01:15:24
|
Update of /cvsroot/linux-vax/kernel-2.4/include/asm-vax/mm In directory usw-pr-cvs1:/tmp/cvs-serv30447 Added Files: cache.h Log Message: Test commit. --- NEW FILE --- #ifndef __VAX_MM_CACHE_H #define __VAX_MM_CACHE_H /* * cache.h. Definitions for cache structures/routines. * Copyright atp Jan 2001 */ /* FIXME: double check this. VAX hw ref guide pg 274 */ /* Also see flush cache arch document by D. Mosberger */ #define flush_cache_all() do { } while (0) #define flush_cache_mm(mm) do { } while (0) #define flush_cache_range(mm, start, end) do { } while (0) #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) { /* Push a PC/PSL onto the stack so it looks like we got an interrupt, and then REI */ __asm__ ( " movpsl -(sp) \n" " pushab 1f \n" " rei \n" "1: " : : ); } #endif /* __VAX_MM_CACHE_H */ |
From: Andy P. <at...@us...> - 2001-02-15 01:06:57
|
Update of /cvsroot/linux-vax/kernel-2.4/include/asm-vax/mm In directory usw-pr-cvs1:/tmp/cvs-serv29599 Removed Files: pgcompat.h Log Message: removal of old file. superseded by pagelet stuff --- pgcompat.h DELETED --- |
From: Kenn H. <ke...@us...> - 2001-02-11 23:57:40
|
Update of /cvsroot/linux-vax/kernel-2.4/arch/vax/kernel In directory usw-pr-cvs1:/tmp/cvs-serv5561 Modified Files: cpu_ka42.c cpu_ka43.c Log Message: We no longer explicitly call vax_lance_probe(). It's now handled by an initcall. Index: cpu_ka42.c =================================================================== RCS file: /cvsroot/linux-vax/kernel-2.4/arch/vax/kernel/cpu_ka42.c,v retrieving revision 1.2 retrieving revision 1.3 diff -u -r1.2 -r1.3 --- cpu_ka42.c 2001/01/26 00:27:00 1.2 +++ cpu_ka42.c 2001/02/11 23:58:11 1.3 @@ -76,9 +76,6 @@ #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.2 retrieving revision 1.3 diff -u -r1.2 -r1.3 --- cpu_ka43.c 2001/01/26 00:27:00 1.2 +++ cpu_ka43.c 2001/02/11 23:58:11 1.3 @@ -143,11 +143,6 @@ { #ifdef CONFIG_VSABUS vsa_setup(); - -#ifdef CONFIG_VAX_LANCE - vax_lance_probe(0); -#endif /* CONFIG_VAX_LANCE */ - #endif /* CONFIG_VSABUS */ } |
From: Kenn H. <ke...@us...> - 2001-02-11 23:56:45
|
Update of /cvsroot/linux-vax/kernel-2.4/drivers/net In directory usw-pr-cvs1:/tmp/cvs-serv5522 Modified Files: vaxlance.c Log Message: Mark vax_lance_probe as an initcall Index: vaxlance.c =================================================================== RCS file: /cvsroot/linux-vax/kernel-2.4/drivers/net/vaxlance.c,v retrieving revision 1.3 retrieving revision 1.4 diff -u -r1.3 -r1.4 --- vaxlance.c 2001/02/11 19:05:20 1.3 +++ vaxlance.c 2001/02/11 23:57:16 1.4 @@ -1082,6 +1082,8 @@ return -ENODEV; } +__initcall(vax_lance_probe); + /* #ifdef MODULE |
From: Kenn H. <ke...@us...> - 2001-02-11 23:55:54
|
Update of /cvsroot/linux-vax/kernel-2.4/drivers/char In directory usw-pr-cvs1:/tmp/cvs-serv5451 Modified Files: tty_io.c Log Message: Temporarily remove the check that panics if the page size is smaller than a tty_struct Index: tty_io.c =================================================================== RCS file: /cvsroot/linux-vax/kernel-2.4/drivers/char/tty_io.c,v retrieving revision 1.1.1.1 retrieving revision 1.2 diff -u -r1.1.1.1 -r1.2 --- tty_io.c 2001/01/14 17:50:46 1.1.1.1 +++ tty_io.c 2001/02/11 23:56:25 1.2 @@ -2219,8 +2219,10 @@ */ void __init tty_init(void) { +#if 0 /* temporary for VAX */ if (sizeof(struct tty_struct) > PAGE_SIZE) panic("size of tty structure > PAGE_SIZE!"); +#endif /* * dev_tty_driver and dev_console_driver are actually magic |
From: Kenn H. <ke...@us...> - 2001-02-11 23:46:55
|
Update of /cvsroot/linux-vax/kernel-2.4/arch/vax/kernel In directory usw-pr-cvs1:/tmp/cvs-serv4796 Modified Files: cpu_ka55.c Log Message: Oops - typo Index: cpu_ka55.c =================================================================== RCS file: /cvsroot/linux-vax/kernel-2.4/arch/vax/kernel/cpu_ka55.c,v retrieving revision 1.2 retrieving revision 1.3 diff -u -r1.2 -r1.3 --- cpu_ka55.c 2001/02/11 23:41:08 1.2 +++ cpu_ka55.c 2001/02/11 23:47:25 1.3 @@ -58,7 +58,7 @@ void ka55_prom_putchar(int c) { asm (" - mov $0x2014044b, r11 # console page addr + movl $0x2014044b, r11 # console page addr 1: jsb *0x20(r11) # ready to TX? blbc r0, 1b |
From: Kenn H. <ke...@us...> - 2001-02-11 23:40:37
|
Update of /cvsroot/linux-vax/kernel-2.4/arch/vax/kernel In directory usw-pr-cvs1:/tmp/cvs-serv4435 Modified Files: cpu_ka55.c Log Message: This should hopefully give us early console output on KA55 (MV3100m85) Index: cpu_ka55.c =================================================================== RCS file: /cvsroot/linux-vax/kernel-2.4/arch/vax/kernel/cpu_ka55.c,v retrieving revision 1.1 retrieving revision 1.2 diff -u -r1.1 -r1.2 --- cpu_ka55.c 2001/02/06 00:15:42 1.1 +++ cpu_ka55.c 2001/02/11 23:41:08 1.2 @@ -19,6 +19,8 @@ void ka55_pre_vm_init(void); void ka55_post_vm_init(void); +void ka55_prom_putchar(int); +int ka55_prom_getchar(void); const char *ka55_cpu_type_str(void); @@ -32,9 +34,8 @@ ka55_pre_vm_init, ka55_post_vm_init, - /* FIXME: these two are just a guess */ - ka46_48_49_prom_putchar, /* pre_vm_putchar */ - ka46_48_49_prom_getchar, /* pre_vm_getchar */ + ka55_prom_putchar, /* pre_vm_putchar */ + ka55_prom_getchar, /* pre_vm_getchar */ dz11_putchar, /* post_vm_putchar */ dz11_getchar, /* post_vm_getchar */ @@ -54,6 +55,27 @@ /* Defined over in drivers/char/dz.c */ extern unsigned long dz_serial_console_init(unsigned long, unsigned long); +void ka55_prom_putchar(int c) +{ + asm (" + mov $0x2014044b, r11 # console page addr + 1: + jsb *0x20(r11) # ready to TX? + blbc r0, 1b + movl %0, r1 + jsb *0x24(r11) # TX char in R11 + " : /* no outputs */ + : "g"(c) + : "r0", "r1", "r11" ); +} + +int ka55_prom_getchar(void) +{ + /* Not yet implemented */ + asm("halt"); + return 0; +} + void ka55_pre_vm_init(void) { @@ -62,7 +84,7 @@ void ka55_post_vm_init(void) { - init_dz11_console(0x200A0000, 3); + init_dz11_console(0x25000000, 3); dz_serial_console_init(0, 0); } |
From: Dave A. <ai...@us...> - 2001-02-11 19:04:49
|
Update of /cvsroot/linux-vax/kernel-2.4/drivers/net In directory usw-pr-cvs1:/tmp/cvs-serv12448 Modified Files: Makefile vaxlance.c Log Message: added vaxlance.c to the compile list fix typo in vaxlance.c Index: Makefile =================================================================== RCS file: /cvsroot/linux-vax/kernel-2.4/drivers/net/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:18:08 1.1.1.1 +++ Makefile 2001/02/11 19:05:20 1.2 @@ -188,6 +188,7 @@ obj-$(CONFIG_MIPS_JAZZ_SONIC) += jazzsonic.o obj-$(CONFIG_SGI_IOC3_ETH) += ioc3-eth.o obj-$(CONFIG_BAGETLANCE) += bagetlance.o +obj-$(CONFIG_VAX_LANCE) += vaxlance.o obj-$(CONFIG_DECLANCE) += declance.o obj-$(CONFIG_ATARILANCE) += atarilance.o obj-$(CONFIG_ATARI_BIONET) += atari_bionet.o Index: vaxlance.c =================================================================== RCS file: /cvsroot/linux-vax/kernel-2.4/drivers/net/vaxlance.c,v retrieving revision 1.2 retrieving revision 1.3 diff -u -r1.2 -r1.3 --- vaxlance.c 2001/01/20 23:45:25 1.2 +++ vaxlance.c 2001/02/11 19:05:20 1.3 @@ -1068,7 +1068,7 @@ /* Find all the lance cards on the system and initialize them */ -static int __init dec_lance_probe(void) +static int __init vax_lance_probe(void) { struct net_device *dev = NULL; static int called = 0; |
From: Kenn H. <ke...@us...> - 2001-02-06 00:15:29
|
Update of /cvsroot/linux-vax/kernel-2.4/arch/vax/boot In directory usw-pr-cvs1:/tmp/cvs-serv6404/arch/vax/boot Modified Files: cpu_sel.S Log Message: Tentative early support for KA55 CPU (MicroVAX 3100m85). I really need to check with NetBSD on this one Index: cpu_sel.S =================================================================== RCS file: /cvsroot/linux-vax/kernel-2.4/arch/vax/boot/cpu_sel.S,v retrieving revision 1.2 retrieving revision 1.3 diff -u -r1.2 -r1.3 --- cpu_sel.S 2001/01/26 00:27:00 1.2 +++ cpu_sel.S 2001/02/06 00:15:42 1.3 @@ -56,7 +56,6 @@ vax_730: vax_8600: vax_uvax1: -vax_nvax: /* Fall through to unsupported_cpu_family */ # Type E/I PR$_SID at console to get SID register value and report to @@ -190,4 +189,14 @@ # so we just assume KA46 (VAXstation 4000/60) moval mv_ka46, mv rsb + +/***************************************************************************/ +/* MARIAH support */ + +vax_nvax: +# Do not know how to interpret the SID or SIDEX for NVAX-based machines, +# so we just assume KA55 (MicroVAX 3100m85) + moval mv_ka55, mv + rsb + |
From: Kenn H. <ke...@us...> - 2001-02-06 00:15:29
|
Update of /cvsroot/linux-vax/kernel-2.4/arch/vax/kernel In directory usw-pr-cvs1:/tmp/cvs-serv6404/arch/vax/kernel Modified Files: Makefile Added Files: cpu_ka55.c Log Message: Tentative early support for KA55 CPU (MicroVAX 3100m85). I really need to check with NetBSD on this one --- NEW FILE --- /* * $Id: cpu_ka55.c,v 1.1 2001/02/06 00:15:42 kenn Exp $ * * Copyright (C) 2000 Kenn Humborg * * This file contains generic machine vector handlers for the * KA5 CPU in the NVAX-based MicroVAX 3100 Model 85 * */ #include <linux/types.h> /* For NULL */ #include <linux/kernel.h> /* For printk */ #include <linux/config.h> #include <asm/mtpr.h> #include <asm/mv.h> #include <asm/vaxcpu.h> void ka55_pre_vm_init(void); void ka55_post_vm_init(void); const char *ka55_cpu_type_str(void); struct ka55_machine_vector { struct vax_mv mv; unsigned int sidex; }; struct ka55_machine_vector mv_ka55 = { { ka55_pre_vm_init, ka55_post_vm_init, /* FIXME: these two are just a guess */ ka46_48_49_prom_putchar, /* pre_vm_putchar */ ka46_48_49_prom_getchar, /* pre_vm_getchar */ dz11_putchar, /* post_vm_putchar */ dz11_getchar, /* post_vm_getchar */ NULL, /* console_init */ NULL, /* reboot */ NULL, /* halt */ NULL, /* init_devices */ ka55_cpu_type_str }, 0 /* System ID Extension from ROM */ }; /* Defined over in drivers/char/dz.c */ extern unsigned long dz_serial_console_init(unsigned long, unsigned long); void ka55_pre_vm_init(void) { mv_ka55.sidex = *(unsigned int *)RIGEL_SIDEX_ADDR; } void ka55_post_vm_init(void) { init_dz11_console(0x200A0000, 3); dz_serial_console_init(0, 0); } const char *ka55_cpu_type_str(void) { return "KA55"; } Index: Makefile =================================================================== RCS file: /cvsroot/linux-vax/kernel-2.4/arch/vax/kernel/Makefile,v retrieving revision 1.4 retrieving revision 1.5 diff -u -r1.4 -r1.5 --- Makefile 2001/01/29 01:09:18 1.4 +++ Makefile 2001/02/06 00:15:42 1.5 @@ -15,7 +15,7 @@ syscall.o signal.o semaphore.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 + cpu_ka410.o cpu_ka42.o cpu_ka43.o cpu_ka46.o cpu_ka55.o OX_OBJS := MX_OBJS := |
From: Kenn H. <ke...@us...> - 2001-02-06 00:15:29
|
Update of /cvsroot/linux-vax/kernel-2.4/include/asm-vax In directory usw-pr-cvs1:/tmp/cvs-serv6404/include/asm Modified Files: vaxcpu.h Log Message: Tentative early support for KA55 CPU (MicroVAX 3100m85). I really need to check with NetBSD on this one Index: vaxcpu.h =================================================================== RCS file: /cvsroot/linux-vax/kernel-2.4/include/asm-vax/vaxcpu.h,v retrieving revision 1.2 retrieving revision 1.3 diff -u -r1.2 -r1.3 --- vaxcpu.h 2001/01/23 23:57:07 1.2 +++ vaxcpu.h 2001/02/06 00:15:42 1.3 @@ -267,5 +267,9 @@ #define SOC_Q22_SUBTYPE_KA660 5 +/*****************************************************************************/ +/* Definitions for NVAX family CPUs */ + +#define NVAX_SIDEX_ADDR 0x20040004 #endif _VAX_CPU_H |
From: Kenn H. <ke...@us...> - 2001-02-05 00:09:20
|
Update of /cvsroot/linux-vax/kernel-2.4/include/asm-vax In directory usw-pr-cvs1:/tmp/cvs-serv30243 Modified Files: uaccess.h Log Message: Declarations for strlen_user and strnlen_user Index: uaccess.h =================================================================== RCS file: /cvsroot/linux-vax/kernel-2.4/include/asm-vax/uaccess.h,v retrieving revision 1.1 retrieving revision 1.2 diff -u -r1.1 -r1.2 --- uaccess.h 2001/01/17 16:18:52 1.1 +++ uaccess.h 2001/02/05 00:09:31 1.2 @@ -261,8 +261,20 @@ * * Return 0 for error */ +extern long __strlen_user(const char *); -extern long strlen_user(const char *); +extern inline long strlen_user(const char *str) +{ + return access_ok(VERIFY_READ,str,0) ? __strlen_user(str) : 0; +} + +/* Returns: 0 if exception before NUL or reaching the supplied limit (N), + * a value greater than N if the limit would be exceeded, else strlen. */ +extern long __strnlen_user(const char *, long); +extern inline long strnlen_user(const char *str, long n) +{ + return access_ok(VERIFY_READ,str,0) ? __strnlen_user(str, n) : 0; +} #endif /* __ASSEMBLY__ */ |
From: Kenn H. <ke...@us...> - 2001-02-05 00:07:51
|
Update of /cvsroot/linux-vax/kernel-2.4/arch/vax/lib In directory usw-pr-cvs1:/tmp/cvs-serv30022 Modified Files: Makefile Added Files: negdi.c string_user.c Log Message: Add temporary implementation of GCC __negdi2 primitive. Add skeletons for copy to/from user and str*_user functions --- NEW FILE --- /* * $Id: negdi.c,v 1.1 2001/02/05 00:08:02 kenn Exp $ * * Copyright (C) 2001, Kenn Humborg * * This is a temporary implementation of GCCs negdi2 primitive. * Once we get native support in the compiler, this will be * removed from here * */ long long __negdi2(long long x) { __asm__ volatile ( " xorl2 $-1, 4(%0) \n" /* complement high longword */ " mnegl (%0), (%0) \n" /* negate low longword */ " bneq 1f \n" /* no overflow */ " incl 4(%0) \n" /* inc high longword */ "1: " : : "r"(&x) : "r0"); return x; } --- NEW FILE --- /* * $Id: string_user.c,v 1.1 2001/02/05 00:08:02 kenn Exp $ * * Copyright (C) 2001, Kenn Humborg * * These functions are used to do string operations on user memory */ #include <linux/string.h> #include <linux/kernel.h> /* for panic() */ int __copy_tofrom_user(void *to, const void *from, unsigned long size) { panic("__copy_tofrom_user: not implemented"); } unsigned long __clear_user(void *addr, unsigned long size) { panic("__clear_user: not implemented"); } int __strncpy_from_user(char *dst, const char *src, long count) { panic("__strncpy_from_user: not implemented"); } extern long __strlen_user(const char *s) { panic("__strlen_user: not implemented"); } extern long __strnlen_user(const char *s, long n) { panic("__strnlen_user: not implemented"); } Index: Makefile =================================================================== RCS file: /cvsroot/linux-vax/kernel-2.4/arch/vax/lib/Makefile,v retrieving revision 1.3 retrieving revision 1.4 diff -u -r1.3 -r1.4 --- Makefile 2001/01/29 01:00:20 1.3 +++ Makefile 2001/02/05 00:08:02 1.4 @@ -10,7 +10,7 @@ all: libio.a L_TARGET := libio.a -obj-y := string.o console.o +obj-y := string.o string_user.o console.o negdi.o include $(TOPDIR)/Rules.make |
From: Kenn H. <ke...@us...> - 2001-02-05 00:06:00
|
Update of /cvsroot/linux-vax/kernel-2.4/arch/vax/mm In directory usw-pr-cvs1:/tmp/cvs-serv29921/mm Modified Files: init.c Log Message: quicklists definition was missing, remove highmemory crud Index: init.c =================================================================== RCS file: /cvsroot/linux-vax/kernel-2.4/arch/vax/mm/init.c,v retrieving revision 1.3 retrieving revision 1.4 diff -u -r1.3 -r1.4 --- init.c 2001/01/29 01:01:32 1.3 +++ init.c 2001/02/05 00:06:11 1.4 @@ -11,13 +11,18 @@ #include <linux/init.h> #include <asm/pgtable.h> +#include <asm/pgalloc.h> #include <asm/rpb.h> static unsigned long totalram_pages; -static unsigned long totalhigh_pages; unsigned long empty_zero_page[PAGE_SIZE/sizeof(unsigned long)] __attribute__ ((__aligned__ (PAGE_SIZE))); +#ifndef CONFIG_SMP +struct pgtable_cache_struct quicklists; +#endif + + /* 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 @@ -103,8 +108,8 @@ val->sharedram = 0; val->freeram = nr_free_pages(); val->bufferram = atomic_read(&buffermem_pages); - val->totalhigh = totalhigh_pages; - val->freehigh = nr_free_highpages(); + val->totalhigh = 0; + val->freehigh = 0; val->mem_unit = PAGE_SIZE; return; } |
From: Kenn H. <ke...@us...> - 2001-02-05 00:04:57
|
Update of /cvsroot/linux-vax/kernel-2.4/arch/vax/kernel In directory usw-pr-cvs1:/tmp/cvs-serv29827/kernel Modified Files: process.c Log Message: Added flush_thread definition Index: process.c =================================================================== RCS file: /cvsroot/linux-vax/kernel-2.4/arch/vax/kernel/process.c,v retrieving revision 1.3 retrieving revision 1.4 diff -u -r1.3 -r1.4 --- process.c 2001/01/26 00:27:00 1.3 +++ process.c 2001/02/05 00:05:08 1.4 @@ -137,6 +137,14 @@ return 0; } +void flush_thread(void) +{ + /* I don't really know what's supposed to go in here. It + gets called just after exec(), so I guess we reset any + VAX-specific thread state here */ +} + + static ATTRIB_NORET void kernel_thread_exit(int exitcode) { __chmk(__NR_exit); |
From: Kenn H. <ke...@us...> - 2001-02-05 00:04:11
|
Update of /cvsroot/linux-vax/kernel-2.4/include/asm-vax/mm In directory usw-pr-cvs1:/tmp/cvs-serv29747/mm Modified Files: pgalloc.h Log Message: Add flush_tlb_pgtables() Index: pgalloc.h =================================================================== RCS file: /cvsroot/linux-vax/kernel-2.4/include/asm-vax/mm/pgalloc.h,v retrieving revision 1.1 retrieving revision 1.2 diff -u -r1.1 -r1.2 --- pgalloc.h 2001/01/17 16:18:52 1.1 +++ pgalloc.h 2001/02/05 00:04:21 1.2 @@ -222,6 +222,12 @@ __flush_tlb(); } +static inline void flush_tlb_pgtables(struct mm_struct *mm, + unsigned long start, unsigned long end) +{ + /* nothing to do on VAX */ +} + #else /* FIXME: SMP - another day perhaps */ @@ -282,6 +288,15 @@ flush_tlb_mm(mm); } +static inline void flush_tlb_pgtables(struct mm_struct *mm, + unsigned long start, unsigned long end) +{ + /* FIXME: do we need to notify other CPUs that a process + page table is going away? I don't think so... + + But what if two processes are sharing this mm_struct and + are currently running on two different CPUs? */ +} #else @@ -306,6 +321,18 @@ { flush_tlb(); } + +static inline void flush_tlb_pgtables(struct mm_struct *mm, + unsigned long start, unsigned long end) +{ + /* FIXME: do we need to notify other CPUs that a process + page table is going away? I don't think so... + + But what if two processes are sharing this mm_struct and + are currently running on two different CPUs? */ +} + + #endif /* clever_smp_invalidate */ #endif /* smp */ |
From: Kenn H. <ke...@us...> - 2001-02-05 00:03:21
|
Update of /cvsroot/linux-vax/kernel-2.4/include/asm-vax/mm In directory usw-pr-cvs1:/tmp/cvs-serv29639/mm Modified Files: pgtable.h Log Message: A few one-liners to fix some warnings Index: pgtable.h =================================================================== RCS file: /cvsroot/linux-vax/kernel-2.4/include/asm-vax/mm/pgtable.h,v retrieving revision 1.5 retrieving revision 1.6 diff -u -r1.5 -r1.6 --- pgtable.h 2001/01/29 00:49:26 1.5 +++ pgtable.h 2001/02/05 00:03:30 1.6 @@ -323,6 +323,9 @@ ((unsigned long) __va(pmd_val(pmd) & _PFN_MASK)) /* to find an entry in a page-table-directory */ +#define pgd_index(address) ((address >> PGDIR_SHIFT) & (PTRS_PER_PGD-1)) +#define __pgd_offset(address) pgd_index(address) + #define pgd_offset(mm, address) \ ((mm)->pgd + ((address) >> PGDIR_SHIFT)) @@ -348,6 +351,7 @@ /* 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 */ #define PageSkip(page) (0) +#define kern_addr_valid(addr) (1) extern inline void pmd_set(pmd_t * pmdp, pte_t * ptep) { |
From: Kenn H. <ke...@us...> - 2001-02-05 00:02:33
|
Update of /cvsroot/linux-vax/kernel-2.4/include/asm-vax In directory usw-pr-cvs1:/tmp/cvs-serv29530 Modified Files: unistd.h Log Message: I don't think __kernel_execve() is needed any more Index: unistd.h =================================================================== RCS file: /cvsroot/linux-vax/kernel-2.4/include/asm-vax/unistd.h,v retrieving revision 1.2 retrieving revision 1.3 diff -u -r1.2 -r1.3 --- unistd.h 2001/01/23 23:56:25 1.2 +++ unistd.h 2001/02/05 00:02:43 1.3 @@ -434,12 +434,12 @@ return sys_read(fd, buf, nr); } -extern int __kernel_execve(char *, char **, char **, struct pt_regs *); +extern int sys_execve(char * file, char ** argvp, char ** envp, struct pt_regs *regs); static inline int execve(char * file, char ** argvp, char ** envp) { struct pt_regs regs; memset(®s, 0, sizeof(regs)); - return __kernel_execve(file, argvp, envp, ®s); + return sys_execve(file, argvp, envp, ®s); } extern int sys_setsid(void); |
From: Kenn H. <ke...@us...> - 2001-02-05 00:01:15
|
Update of /cvsroot/linux-vax/kernel-2.4/include/asm-vax In directory usw-pr-cvs1:/tmp/cvs-serv29423 Modified Files: processor.h Log Message: Fix release_thread() and get_task_struct() Index: processor.h =================================================================== RCS file: /cvsroot/linux-vax/kernel-2.4/include/asm-vax/processor.h,v retrieving revision 1.6 retrieving revision 1.7 diff -u -r1.6 -r1.7 --- processor.h 2001/01/23 23:50:19 1.6 +++ processor.h 2001/02/05 00:01:24 1.7 @@ -89,7 +89,10 @@ struct task_struct; /* Free all resources held by a thread. */ -extern void release_thread(struct task_struct *); +static inline void release_thread(struct task_struct *p) +{ + /* nothing to do on VAX */ +} extern int kernel_thread(int (*fn)(void *), void * arg, unsigned long flags); @@ -135,9 +138,12 @@ chunks later when memory gets fragmented on small machines. See arch/i386/kernel/process.c for the implementation of this. */ + +/* FIXME: change the page order from 4 to 1 once the pagelet stuff is done */ #define alloc_task_struct() \ ((struct task_struct *) __get_free_pages(GFP_KERNEL,4)) #define free_task_struct(p) free_pages((unsigned long)(p),4) +#define get_task_struct(tsk) atomic_inc(&virt_to_page(tsk)->count) #define init_task (init_task_union.task) #define init_stack (init_task_union.stack) |
From: Kenn H. <ke...@us...> - 2001-02-04 20:02:13
|
Update of /cvsroot/linux-vax/kernel-2.4/Documentation/vax In directory usw-pr-cvs1:/tmp/cvs-serv31497 Modified Files: README Log Message: Add Id: line Index: README =================================================================== RCS file: /cvsroot/linux-vax/kernel-2.4/Documentation/vax/README,v retrieving revision 1.4 retrieving revision 1.5 diff -u -r1.4 -r1.5 --- README 2001/02/04 18:57:43 1.4 +++ README 2001/02/04 18:59:50 1.5 @@ -1,5 +1,5 @@ -Last updated Feb 2, 2001 +$Id$ GETTING STARTED |
From: Kenn H. <ke...@us...> - 2001-02-04 20:02:13
|
Update of /cvsroot/linux-vax/kernel-2.4/Documentation/vax In directory usw-pr-cvs1:/tmp/cvs-serv31325 Modified Files: README Log Message: Add info on 20001231 toolchain snapshots Index: README =================================================================== RCS file: /cvsroot/linux-vax/kernel-2.4/Documentation/vax/README,v retrieving revision 1.3 retrieving revision 1.4 diff -u -r1.3 -r1.4 --- README 2001/02/03 13:51:48 1.3 +++ README 2001/02/04 18:57:43 1.4 @@ -22,12 +22,17 @@ $ cvs -z9 -d:pserver:ano...@cv...:/cvsroot/linux-vax co tools + Alternatively, you get get a snapshot of the 20001231 toolchain sources + at: + + ftp://linux-vax.sourceforge.net/pub/linux-vax/tools/Sources/tools-src-linuxvax-20001231.tar.bz2 + Then build the combined binutils/gcc source tree: $ cd tools $ ./build-vax.sh - These should complete without errors. If you get errors, something + This should complete without errors. If you get errors, something is seriously wrong and you probably won't get a correctly-installed toolchain. All object files and binaries will be created in tools/b-vax-dec-linux without touching the source trees. @@ -41,9 +46,16 @@ /usr/local/vax-dec-linux and /usr/local/lib/gcc-lib/vax-dec-linux. This will not touch your current GCC installation. + + If you don't want to build your own toolchain, you can get a binary + snapshot of the 20001231 toolchain at: + + ftp://linux-vax.sourceforge.net/pub/linux-vax/tools/Binaries/tools-bin-linuxvax-20001231.tar.bz2 + + These binaries were built with a /usr/local prefix, so you need to - A toolchain snapshot will soon be available for those people who don't - want to compile their own. + $ cd / + $ tar xvf <wherever>/tools-bin-linuxvax-20001231.tar.bz2 --use=bzip2 2. The kernel sources |
From: Kenn H. <ke...@us...> - 2001-02-03 13:51:41
|
Update of /cvsroot/linux-vax/kernel-2.4/Documentation/vax In directory usw-pr-cvs1:/tmp/cvs-serv21528 Modified Files: README Log Message: Need coffee.... Index: README =================================================================== RCS file: /cvsroot/linux-vax/kernel-2.4/Documentation/vax/README,v retrieving revision 1.2 retrieving revision 1.3 diff -u -r1.2 -r1.3 --- README 2001/02/03 13:43:39 1.2 +++ README 2001/02/03 13:51:48 1.3 @@ -1,5 +1,5 @@ -Last updated Feb 2, 2000 +Last updated Feb 2, 2001 GETTING STARTED |