Author: stepan Date: 2006-05-22 12:37:34 +0200 (Mon, 22 May 2006) New Revision: 25
Modified: openbios-devel/config/examples/cross-sparc32_config.xml openbios-devel/config/examples/cross-sparc32_rules.xml openbios-devel/config/examples/sparc32_config.xml openbios-devel/config/examples/sparc32_rules.xml openbios-devel/drivers/esp.c openbios-devel/drivers/iommu.c openbios-devel/drivers/pgtsrmmu.h openbios-devel/include/libc/string.h openbios-devel/include/sparc32/io.h openbios-devel/modules/nvram.c openbios-devel/toke/stream.c Log: blueswirl -14 generic and sparc32 related code
Modified: openbios-devel/config/examples/cross-sparc32_config.xml =================================================================== --- openbios-devel/config/examples/cross-sparc32_config.xml 2006-05-22 10:33:31 UTC (rev 24) +++ openbios-devel/config/examples/cross-sparc32_config.xml 2006-05-22 10:37:34 UTC (rev 25) @@ -46,20 +46,20 @@ <option name="CONFIG_SUN_PARTS" type="boolean" value="true"/> <option name="CONFIG_FS" type="boolean" value="true"/> <option name="CONFIG_HFS" type="boolean" value="false"/> - <option name="CONFIG_HFSP" type="boolean" value="false"/> + <option name="CONFIG_HFSP" type="boolean" value="true"/> <option name="CONFIG_GRUBFS" type="boolean" value="true"/> <option name="CONFIG_FSYS_EXT2FS" type="boolean" value="true"/> - <option name="CONFIG_FSYS_FAT" type="boolean" value="false"/> - <option name="CONFIG_FSYS_JFS" type="boolean" value="false"/> - <option name="CONFIG_FSYS_MINIX" type="boolean" value="false"/> - <option name="CONFIG_FSYS_REISERFS" type="boolean" value="false"/> - <option name="CONFIG_FSYS_XFS" type="boolean" value="false"/> + <option name="CONFIG_FSYS_FAT" type="boolean" value="true"/> + <option name="CONFIG_FSYS_JFS" type="boolean" value="true"/> + <option name="CONFIG_FSYS_MINIX" type="boolean" value="true"/> + <option name="CONFIG_FSYS_REISERFS" type="boolean" value="true"/> + <option name="CONFIG_FSYS_XFS" type="boolean" value="true"/> <option name="CONFIG_FSYS_UFS" type="boolean" value="true"/> <option name="CONFIG_FSYS_ISO9660" type="boolean" value="true"/> - <option name="CONFIG_FSYS_FFS" type="boolean" value="false"/> - <option name="CONFIG_FSYS_VSTAFS" type="boolean" value="false"/> + <option name="CONFIG_FSYS_FFS" type="boolean" value="true"/> + <option name="CONFIG_FSYS_VSTAFS" type="boolean" value="true"/> <option name="CONFIG_FSYS_NTFS" type="boolean" value="false"/> - <option name="CONFIG_FSYS_AFFS" type="boolean" value="false"/> + <option name="CONFIG_FSYS_AFFS" type="boolean" value="true"/> <option name="CONFIG_DEBUG_FS" type="boolean" value="false"/>
<!-- Miscellaneous --> @@ -69,7 +69,7 @@ <option name="CONFIG_DRIVER_SBUS" type="boolean" value="true"/> <option name="CONFIG_DRIVER_OBIO" type="boolean" value="true"/> <option name="CONFIG_DRIVER_ESP" type="boolean" value="true"/> - <option name="CONFIG_DRIVER_FLOPPY" type="boolean" value="false"/> + <option name="CONFIG_DRIVER_FLOPPY" type="boolean" value="true"/>
</config>
Modified: openbios-devel/config/examples/cross-sparc32_rules.xml =================================================================== --- openbios-devel/config/examples/cross-sparc32_rules.xml 2006-05-22 10:33:31 UTC (rev 24) +++ openbios-devel/config/examples/cross-sparc32_rules.xml 2006-05-22 10:37:34 UTC (rev 25) @@ -21,6 +21,8 @@ STRIP := sparc-linux-strip RANLIB := sparc-linux-ranlib CFLAGS := -Os -Wall -W -DNATIVE_BITWIDTH_EQUALS_HOST_BITWIDTH -USWAP_ENDIANNESS -fno-builtin -g +CFLAGS+= -Wredundant-decls -Wshadow -Wpointer-arith -Wstrict-prototypes -Wmissing-declarations +CFLAGS+= -Wundef -Wendif-labels -Wstrict-aliasing INCLUDES := -Iinclude -Ikernel/include -I$(ODIR)/target/include
#
Modified: openbios-devel/config/examples/sparc32_config.xml =================================================================== --- openbios-devel/config/examples/sparc32_config.xml 2006-05-22 10:33:31 UTC (rev 24) +++ openbios-devel/config/examples/sparc32_config.xml 2006-05-22 10:37:34 UTC (rev 25) @@ -46,20 +46,20 @@ <option name="CONFIG_SUN_PARTS" type="boolean" value="true"/> <option name="CONFIG_FS" type="boolean" value="true"/> <option name="CONFIG_HFS" type="boolean" value="false"/> - <option name="CONFIG_HFSP" type="boolean" value="false"/> + <option name="CONFIG_HFSP" type="boolean" value="true"/> <option name="CONFIG_GRUBFS" type="boolean" value="true"/> <option name="CONFIG_FSYS_EXT2FS" type="boolean" value="true"/> - <option name="CONFIG_FSYS_FAT" type="boolean" value="false"/> - <option name="CONFIG_FSYS_JFS" type="boolean" value="false"/> - <option name="CONFIG_FSYS_MINIX" type="boolean" value="false"/> - <option name="CONFIG_FSYS_REISERFS" type="boolean" value="false"/> - <option name="CONFIG_FSYS_XFS" type="boolean" value="false"/> + <option name="CONFIG_FSYS_FAT" type="boolean" value="true"/> + <option name="CONFIG_FSYS_JFS" type="boolean" value="true"/> + <option name="CONFIG_FSYS_MINIX" type="boolean" value="true"/> + <option name="CONFIG_FSYS_REISERFS" type="boolean" value="true"/> + <option name="CONFIG_FSYS_XFS" type="boolean" value="true"/> <option name="CONFIG_FSYS_UFS" type="boolean" value="true"/> <option name="CONFIG_FSYS_ISO9660" type="boolean" value="true"/> - <option name="CONFIG_FSYS_FFS" type="boolean" value="false"/> - <option name="CONFIG_FSYS_VSTAFS" type="boolean" value="false"/> + <option name="CONFIG_FSYS_FFS" type="boolean" value="true"/> + <option name="CONFIG_FSYS_VSTAFS" type="boolean" value="true"/> <option name="CONFIG_FSYS_NTFS" type="boolean" value="false"/> - <option name="CONFIG_FSYS_AFFS" type="boolean" value="false"/> + <option name="CONFIG_FSYS_AFFS" type="boolean" value="true"/> <option name="CONFIG_DEBUG_FS" type="boolean" value="false"/>
<!-- Miscellaneous --> @@ -69,7 +69,7 @@ <option name="CONFIG_DRIVER_SBUS" type="boolean" value="true"/> <option name="CONFIG_DRIVER_OBIO" type="boolean" value="true"/> <option name="CONFIG_DRIVER_ESP" type="boolean" value="true"/> - <option name="CONFIG_DRIVER_FLOPPY" type="boolean" value="false"/> + <option name="CONFIG_DRIVER_FLOPPY" type="boolean" value="true"/>
</config>
Modified: openbios-devel/config/examples/sparc32_rules.xml =================================================================== --- openbios-devel/config/examples/sparc32_rules.xml 2006-05-22 10:33:31 UTC (rev 24) +++ openbios-devel/config/examples/sparc32_rules.xml 2006-05-22 10:37:34 UTC (rev 25) @@ -27,6 +27,8 @@ endif
CFLAGS := -Os -Wall -W -DNATIVE_BITWIDTH_EQUALS_HOST_BITWIDTH -USWAP_ENDIANNESS -fno-builtin -g +CFLAGS+= -Wredundant-decls -Wshadow -Wpointer-arith -Wstrict-prototypes -Wmissing-declarations +CFLAGS+= -Wundef -Wendif-labels -Wstrict-aliasing INCLUDES := -Iinclude -Ikernel/include -I$(ODIR)/target/include
#
Modified: openbios-devel/drivers/esp.c =================================================================== --- openbios-devel/drivers/esp.c 2006-05-22 10:33:31 UTC (rev 24) +++ openbios-devel/drivers/esp.c 2006-05-22 10:37:34 UTC (rev 25) @@ -263,7 +263,10 @@ id = POP(); *sd = &global_esp->sd[id];
- DPRINTF("opening drive %d\n", id); +#ifdef CONFIG_DEBUG_ESP + fword("my-args"); + DPRINTF("opening drive %d args %s\n", id, pop_fstr_copy()); +#endif
selfword("open-deblocker");
@@ -393,7 +396,7 @@ };
static void -add_alias(const unsigned char *device, const unsigned char *alias) +add_alias(const char *device, const char *alias) { push_str("/aliases"); fword("find-device"); @@ -413,6 +416,11 @@ DPRINTF("Initializing SCSI...");
esp = malloc(sizeof(esp_private_t)); + if (!esp) { + DPRINTF("Can't allocate ESP private structure\n"); + return -1; + } + global_esp = esp;
if (espdma_init(&esp->espdma) != 0) { @@ -433,7 +441,9 @@
// Chip reset esp->ll->regs[ESP_CMD] = ESP_CMD_RC; - + + DPRINTF("ESP at 0x%lx, buffer va 0x%lx dva 0x%lx\n", (unsigned long)esp, + (unsigned long)esp->buffer, (unsigned long)esp->buffer_dvma); DPRINTF("done\n"); DPRINTF("Initializing SCSI devices...");
@@ -448,8 +458,7 @@ #endif }
- sprintf(nodebuff, "/iommu/sbus/espdma/esp"); - REGISTER_NAMED_NODE(ob_esp, nodebuff); + REGISTER_NAMED_NODE(ob_esp, "/iommu/sbus/espdma/esp"); device_end();
for (id = 0; id < 8; id++) {
Modified: openbios-devel/drivers/iommu.c =================================================================== --- openbios-devel/drivers/iommu.c 2006-05-22 10:33:31 UTC (rev 24) +++ openbios-devel/drivers/iommu.c 2006-05-22 10:37:34 UTC (rev 25) @@ -70,7 +70,7 @@ /* * Allocate memory. This is reusable. */ -static void +void mem_init(struct mem *t, char *begin, char *limit) { t->start = begin; @@ -82,8 +82,14 @@ mem_alloc(struct mem *t, int size, int align) { char *p; + unsigned long pa;
- p = (char *)((((unsigned int)t->curp) + (align-1)) & ~(align-1)); + // The alignment restrictions refer to physical, not virtual + // addresses + pa = va2pa((unsigned long)t->curp) + (align - 1); + pa &= ~(align - 1); + p = (char *)pa2va(pa); + if (p >= t->uplim || p + size > t->uplim) return 0; t->curp = p + size; @@ -193,12 +199,11 @@ * Switch page tables. */ void -init_mmu_swift() +init_mmu_swift(void) { unsigned int addr, i; unsigned long pa, va;
- mem_init(&cmem, (char *) &_vmem, (char *)&_evmem); mem_init(&cio, (char *)&_end, (char *)&_iomem);
context_table = mem_zalloc(&cmem, NCTX_SWIFT * sizeof(int), NCTX_SWIFT * sizeof(int)); @@ -343,11 +348,12 @@
/* flush_cache_all(); */ /** flush_tlb_all(); **/ - regs->base = ((unsigned int)va2pa((unsigned long)ptab)) >> 4; + tmp = (unsigned int)va2pa((unsigned long)ptab); + regs->base = tmp >> 4; iommu_invalidate(regs);
- DPRINTF("IOMMU: impl %d vers %d page table at 0x%p of size %d bytes\n", - impl, vers, t->page_table, ptsize); + DPRINTF("IOMMU: impl %d vers %d page table at 0x%p (pa 0x%x) of size %d bytes\n", + impl, vers, t->page_table, tmp, ptsize);
mem_init(&t->bmap, (char*)t->plow, (char *)0xfffff000); }
Modified: openbios-devel/drivers/pgtsrmmu.h =================================================================== --- openbios-devel/drivers/pgtsrmmu.h 2006-05-22 10:33:31 UTC (rev 24) +++ openbios-devel/drivers/pgtsrmmu.h 2006-05-22 10:37:34 UTC (rev 25) @@ -83,7 +83,7 @@ #ifndef __ASSEMBLY__
/* Accessing the MMU control register. */ -extern __inline__ unsigned int srmmu_get_mmureg(void) +static __inline__ unsigned int srmmu_get_mmureg(void) { unsigned int retval; __asm__ __volatile__("lda [%%g0] %1, %0\n\t" : @@ -92,14 +92,14 @@ return retval; }
-extern __inline__ void srmmu_set_mmureg(unsigned long regval) +static __inline__ void srmmu_set_mmureg(unsigned long regval) { __asm__ __volatile__("sta %0, [%%g0] %1\n\t" : : "r" (regval), "i" (ASI_M_MMUREGS) : "memory");
}
-extern __inline__ void srmmu_set_ctable_ptr(unsigned long paddr) +static __inline__ void srmmu_set_ctable_ptr(unsigned long paddr) { paddr = ((paddr >> 4) & SRMMU_CTX_PMASK); __asm__ __volatile__("sta %0, [%1] %2\n\t" : : @@ -108,7 +108,7 @@ "memory"); }
-extern __inline__ unsigned long srmmu_get_ctable_ptr(void) +static __inline__ unsigned long srmmu_get_ctable_ptr(void) { unsigned int retval;
@@ -119,14 +119,14 @@ return (retval & SRMMU_CTX_PMASK) << 4; }
-extern __inline__ void srmmu_set_context(int context) +static __inline__ void srmmu_set_context(int context) { __asm__ __volatile__("sta %0, [%1] %2\n\t" : : "r" (context), "r" (SRMMU_CTX_REG), "i" (ASI_M_MMUREGS) : "memory"); }
-extern __inline__ int srmmu_get_context(void) +static __inline__ int srmmu_get_context(void) { register int retval; __asm__ __volatile__("lda [%1] %2, %0\n\t" : @@ -136,7 +136,7 @@ return retval; }
-extern __inline__ unsigned int srmmu_get_fstatus(void) +static __inline__ unsigned int srmmu_get_fstatus(void) { unsigned int retval;
@@ -146,7 +146,7 @@ return retval; }
-extern __inline__ unsigned int srmmu_get_faddr(void) +static __inline__ unsigned int srmmu_get_faddr(void) { unsigned int retval;
@@ -157,7 +157,7 @@ }
/* This is guaranteed on all SRMMU's. */ -extern __inline__ void srmmu_flush_whole_tlb(void) +static __inline__ void srmmu_flush_whole_tlb(void) { __asm__ __volatile__("sta %%g0, [%0] %1\n\t": : "r" (0x400), /* Flush entire TLB!! */ @@ -166,7 +166,7 @@ }
/* These flush types are not available on all chips... */ -extern __inline__ void srmmu_flush_tlb_ctx(void) +static __inline__ void srmmu_flush_tlb_ctx(void) { __asm__ __volatile__("sta %%g0, [%0] %1\n\t": : "r" (0x300), /* Flush TLB ctx.. */ @@ -174,7 +174,7 @@
}
-extern __inline__ void srmmu_flush_tlb_region(unsigned long addr) +static __inline__ void srmmu_flush_tlb_region(unsigned long addr) { addr &= SRMMU_PGDIR_MASK; __asm__ __volatile__("sta %%g0, [%0] %1\n\t": : @@ -184,7 +184,7 @@ }
-extern __inline__ void srmmu_flush_tlb_segment(unsigned long addr) +static __inline__ void srmmu_flush_tlb_segment(unsigned long addr) { addr &= SRMMU_PMD_MASK; __asm__ __volatile__("sta %%g0, [%0] %1\n\t": : @@ -193,7 +193,7 @@
}
-extern __inline__ void srmmu_flush_tlb_page(unsigned long page) +static __inline__ void srmmu_flush_tlb_page(unsigned long page) { page &= PAGE_MASK; __asm__ __volatile__("sta %%g0, [%0] %1\n\t": : @@ -202,7 +202,7 @@
}
-extern __inline__ unsigned long srmmu_hwprobe(unsigned long vaddr) +static __inline__ unsigned long srmmu_hwprobe(unsigned long vaddr) { unsigned long retval;
@@ -214,7 +214,7 @@ return retval; }
-extern __inline__ int +static __inline__ int srmmu_get_pte (unsigned long addr) { register unsigned long entry;
Modified: openbios-devel/include/libc/string.h =================================================================== --- openbios-devel/include/libc/string.h 2006-05-22 10:33:31 UTC (rev 24) +++ openbios-devel/include/libc/string.h 2006-05-22 10:37:34 UTC (rev 25) @@ -42,7 +42,7 @@ extern void *memcpy(void * dest,const void *src,size_t count); extern void *memmove(void * dest,const void *src,size_t count); extern int memcmp(const void * cs,const void * ct,size_t count); -extern void *memscan(void * addr, int c, size_t size);void * memscan(void * addr, int c, size_t size); +extern void *memscan(void * addr, int c, size_t size); extern char *strstr(const char * s1,const char * s2); extern void *memchr(const void *s, int c, size_t n);
Modified: openbios-devel/include/sparc32/io.h =================================================================== --- openbios-devel/include/sparc32/io.h 2006-05-22 10:33:31 UTC (rev 24) +++ openbios-devel/include/sparc32/io.h 2006-05-22 10:37:34 UTC (rev 25) @@ -4,7 +4,8 @@ #include "asm/types.h"
extern unsigned int va_shift; // Set in entry.S -extern char _start, _data, _end, _vmem, _evmem, _iomem; // Defined in ldscript +extern char _start, _data, _heap, _eheap, _stack, _estack, _end, + _vmem, _evmem,_iomem; // Defined in ldscript
static inline unsigned long va2pa(unsigned long va) @@ -32,11 +33,12 @@
struct mem;
+void mem_init(struct mem *t, char *begin, char *limit); void *mem_alloc(struct mem *t, int size, int align); void *mem_zalloc(struct mem *t, int size, int align); int map_page(unsigned long va, unsigned long epa, int type); void *map_io(unsigned pa, int size); -void init_mmu_swift(); +void init_mmu_swift(void); void *dvma_alloc(int size, unsigned int *pphys);
#ifndef BOOTSTRAP
Modified: openbios-devel/modules/nvram.c =================================================================== --- openbios-devel/modules/nvram.c 2006-05-22 10:33:31 UTC (rev 24) +++ openbios-devel/modules/nvram.c 2006-05-22 10:37:34 UTC (rev 25) @@ -49,7 +49,7 @@ static unsigned int nvpart_checksum( nvpart_t* hdr ) { - unsigned char *p = (char*)hdr; + unsigned char *p = (unsigned char*)hdr; int i, val = p[0];
for( i=2; i<16; i++ ) {
Modified: openbios-devel/toke/stream.c =================================================================== --- openbios-devel/toke/stream.c 2006-05-22 10:33:31 UTC (rev 24) +++ openbios-devel/toke/stream.c 2006-05-22 10:37:34 UTC (rev 25) @@ -104,7 +104,7 @@ oname = (u8 *)strdup( out_name ); else { ext=strrchr(in_name, '.'); - len=ext ? (ext-in_name) : (unsigned int)strlen(in_name) ; + len=ext ? (unsigned int)(ext-in_name) : (unsigned int)strlen(in_name) ; oname=malloc(len+4); memcpy(oname, in_name, len); oname[len] = 0;