[OpenBIOS] r32 - in openbios-devel: arch/sparc32 drivers forth/admin modules
svn@openbios.org
svn at openbios.org
Thu May 25 23:02:53 CEST 2006
Author: stepan
Date: 2006-05-25 23:02:53 +0200 (Thu, 25 May 2006)
New Revision: 32
Modified:
openbios-devel/arch/sparc32/aoutload.c
openbios-devel/arch/sparc32/ldscript
openbios-devel/drivers/esp.c
openbios-devel/forth/admin/nvram.fs
openbios-devel/modules/sun-parts.c
Log:
blueswirl sparc32 -17 (without romvec.c changes)
Modified: openbios-devel/arch/sparc32/aoutload.c
===================================================================
--- openbios-devel/arch/sparc32/aoutload.c 2006-05-24 11:10:55 UTC (rev 31)
+++ openbios-devel/arch/sparc32/aoutload.c 2006-05-25 21:02:53 UTC (rev 32)
@@ -65,6 +65,7 @@
goto out;
for (offset = 0; offset < 16 * 512; offset += 512) {
+ file_seek(offset);
if (lfile_read(&ehdr, sizeof ehdr) != sizeof ehdr) {
debug("Can't read a.out header\n");
retval = LOADER_NOT_SUPPORT;
@@ -72,8 +73,6 @@
}
if (!N_BADMAG(ehdr))
break;
-
- file_seek(offset);
}
if (N_BADMAG(ehdr)) {
Modified: openbios-devel/arch/sparc32/ldscript
===================================================================
--- openbios-devel/arch/sparc32/ldscript 2006-05-24 11:10:55 UTC (rev 31)
+++ openbios-devel/arch/sparc32/ldscript 2006-05-25 21:02:53 UTC (rev 32)
@@ -14,7 +14,7 @@
HEAP_SIZE = 16384;
STACK_SIZE = 16384;
VMEM_SIZE = 128 * 1024;
-IOMEM_SIZE = 128 * 1024;
+IOMEM_SIZE = 256 * 1024;
SECTIONS
{
Modified: openbios-devel/drivers/esp.c
===================================================================
--- openbios-devel/drivers/esp.c 2006-05-24 11:10:55 UTC (rev 31)
+++ openbios-devel/drivers/esp.c 2006-05-25 21:02:53 UTC (rev 32)
@@ -140,9 +140,11 @@
// offset is multiple of 512, len in bytes
static int
-ob_sd_read_sectors(esp_private_t *esp, sd_private_t *sd, int offset, void *dest, short len)
+ob_sd_read_sectors(esp_private_t *esp, sd_private_t *sd, int offset, void *dest,
+ short len, short sect_offset)
{
- DPRINTF("ob_sd_read_sectors id %d %lx block=%d len=%d\n", sd->id, (unsigned long)dest, offset, len);
+ DPRINTF("ob_sd_read_sectors id %d %lx sector=%d len=%d soff %d\n",
+ sd->id, (unsigned long)dest, offset, len, sect_offset);
// Setup command = Read(10)
memset(esp->buffer, 0, 10);
@@ -157,10 +159,10 @@
esp->buffer[8] = (len >> 8) & 0xff;
esp->buffer[9] = len & 0xff;
- if (do_command(esp, sd, 10, len * 512))
+ if (do_command(esp, sd, 10, len * 512 + sect_offset))
return 0;
- memcpy(dest, esp->buffer, len * 512);
+ memcpy(dest, esp->buffer + sect_offset, len * 512);
return 0;
}
@@ -179,12 +181,8 @@
return 0;
}
- sd->sectors = (esp->buffer[0] << 24) | (esp->buffer[1] << 16) | (esp->buffer[2] << 8) | esp->buffer[3];
-#if 0
sd->bs = (esp->buffer[4] << 24) | (esp->buffer[5] << 16) | (esp->buffer[6] << 8) | esp->buffer[7];
-#else
- sd->bs = 512;
-#endif
+ sd->sectors = ((esp->buffer[0] << 24) | (esp->buffer[1] << 16) | (esp->buffer[2] << 8) | esp->buffer[3]) * (sd->bs / 512);
return 1;
}
@@ -232,16 +230,20 @@
cell n = POP(), cnt = n;
ucell blk = POP();
char *dest = (char*)POP();
+ int pos, spb, sect_offset;
DPRINTF("ob_sd_read_blocks id %d %lx block=%d n=%d\n", (*sd)->id, (unsigned long)dest, blk, n );
- n *= (*sd)->bs / 512;
+ spb = (*sd)->bs / 512;
while (n) {
- if (ob_sd_read_sectors(global_esp, *sd, blk, dest, 1)) {
- DPRINTF("ob_ide_read_blocks: error\n");
+ sect_offset = blk / spb;
+ pos = (blk - sect_offset * spb) * 512;
+
+ if (ob_sd_read_sectors(global_esp, *sd, sect_offset, dest, 1, pos)) {
+ DPRINTF("ob_sd_read_blocks: error\n");
RET(0);
}
- dest += (*sd)->bs;
+ dest += 512;
n--;
blk++;
}
@@ -249,9 +251,9 @@
}
static void
-ob_sd_block_size(sd_private_t **sd)
+ob_sd_block_size(__attribute__((unused))sd_private_t **sd)
{
- PUSH((*sd)->bs);
+ PUSH(512);
}
static void
Modified: openbios-devel/forth/admin/nvram.fs
===================================================================
--- openbios-devel/forth/admin/nvram.fs 2006-05-24 11:10:55 UTC (rev 31)
+++ openbios-devel/forth/admin/nvram.fs 2006-05-25 21:02:53 UTC (rev 32)
@@ -344,6 +344,17 @@
" true" " little-endian?" bool-config
[THEN]
+[IFDEF] CONFIG_SPARC32
+\ ---- SPARC32 ----
+" true" " tpe-link-test?" bool-config
+" 9600,8,n,1,-" " ttya-mode" str-config
+" true" " ttya-ignore-cd" bool-config
+" false" " ttya-rts-dtr-off" bool-config
+" 9600,8,n,1,-" " ttyb-mode" str-config
+" true" " ttyb-ignore-cd" bool-config
+" false" " ttyb-rts-dtr-off" bool-config
+[THEN]
+
\ --- ??? ---
" " " boot-screen" str-config
" " " boot-script" str-config
Modified: openbios-devel/modules/sun-parts.c
===================================================================
--- openbios-devel/modules/sun-parts.c 2006-05-24 11:10:55 UTC (rev 31)
+++ openbios-devel/modules/sun-parts.c 2006-05-25 21:02:53 UTC (rev 32)
@@ -119,7 +119,7 @@
RET(0);
}
- bs = 512; // XXX get real block size?
+ bs = 512;
/* get partition data */
p = (struct sun_disklabel *)buf;
More information about the OpenBIOS
mailing list