mirror of
https://github.com/Stichting-MINIX-Research-Foundation/u-boot.git
synced 2025-09-10 04:26:19 -04:00
* Prepare for release
* Fix problems in memory test on some boards (which was not non-destructive as intended) * Patch by Gary Jennejohn, 28 Oct 2003: Change fs/fat/fat.c to put I/O buffers in BSS instead on the stack to prevent stack overflow on ARM systems
This commit is contained in:
parent
a0f2fe524c
commit
5fa66df63a
@ -2,6 +2,13 @@
|
|||||||
Changes for U-Boot 1.0.0:
|
Changes for U-Boot 1.0.0:
|
||||||
======================================================================
|
======================================================================
|
||||||
|
|
||||||
|
* Fix problems in memory test on some boards (which was not
|
||||||
|
non-destructive as intended)
|
||||||
|
|
||||||
|
* Patch by Gary Jennejohn, 28 Oct 2003:
|
||||||
|
Change fs/fat/fat.c to put I/O buffers in BSS instead on the stack
|
||||||
|
to prevent stack overflow on ARM systems
|
||||||
|
|
||||||
* Patch by Stephan Linz, 28 Oct 2003:
|
* Patch by Stephan Linz, 28 Oct 2003:
|
||||||
fix init sequence error for NIOS port
|
fix init sequence error for NIOS port
|
||||||
|
|
||||||
|
@ -230,7 +230,7 @@ static long int dram_size (long int mamr_value, long int *base,
|
|||||||
volatile immap_t *immap = (immap_t *) CFG_IMMR;
|
volatile immap_t *immap = (immap_t *) CFG_IMMR;
|
||||||
volatile memctl8xx_t *memctl = &immap->im_memctl;
|
volatile memctl8xx_t *memctl = &immap->im_memctl;
|
||||||
volatile long int *addr;
|
volatile long int *addr;
|
||||||
ulong cnt, val;
|
ulong cnt, val, size;
|
||||||
ulong save[32]; /* to make test non-destructive */
|
ulong save[32]; /* to make test non-destructive */
|
||||||
unsigned char i = 0;
|
unsigned char i = 0;
|
||||||
|
|
||||||
@ -250,7 +250,13 @@ static long int dram_size (long int mamr_value, long int *base,
|
|||||||
|
|
||||||
/* check at base address */
|
/* check at base address */
|
||||||
if ((val = *addr) != 0) {
|
if ((val = *addr) != 0) {
|
||||||
|
/* Restore the original data before leaving the function.
|
||||||
|
*/
|
||||||
*addr = save[i];
|
*addr = save[i];
|
||||||
|
for (cnt = 1; cnt <= maxsize / sizeof(long); cnt <<= 1) {
|
||||||
|
addr = (volatile ulong *) base + cnt;
|
||||||
|
*addr = save[--i];
|
||||||
|
}
|
||||||
return (0);
|
return (0);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -261,7 +267,14 @@ static long int dram_size (long int mamr_value, long int *base,
|
|||||||
*addr = save[--i];
|
*addr = save[--i];
|
||||||
|
|
||||||
if (val != (~cnt)) {
|
if (val != (~cnt)) {
|
||||||
return (cnt * sizeof (long));
|
size = cnt * sizeof (long);
|
||||||
|
/* Restore the original data before returning
|
||||||
|
*/
|
||||||
|
for (cnt <<= 1; cnt <= maxsize / sizeof (long); cnt <<= 1) {
|
||||||
|
addr = (volatile ulong *) base + cnt;
|
||||||
|
*addr = save[--i];
|
||||||
|
}
|
||||||
|
return (size);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return (maxsize);
|
return (maxsize);
|
||||||
|
@ -269,7 +269,7 @@ static long int try_init (volatile memctl8260_t * memctl, ulong sdmr,
|
|||||||
ulong orx, volatile uchar * base)
|
ulong orx, volatile uchar * base)
|
||||||
{
|
{
|
||||||
volatile uchar c = 0xff;
|
volatile uchar c = 0xff;
|
||||||
ulong cnt, val;
|
ulong cnt, val, size;
|
||||||
volatile ulong *addr;
|
volatile ulong *addr;
|
||||||
volatile uint *sdmr_ptr;
|
volatile uint *sdmr_ptr;
|
||||||
volatile uint *orx_ptr;
|
volatile uint *orx_ptr;
|
||||||
@ -344,7 +344,13 @@ static long int try_init (volatile memctl8260_t * memctl, ulong sdmr,
|
|||||||
*addr = 0;
|
*addr = 0;
|
||||||
|
|
||||||
if ((val = *addr) != 0) {
|
if ((val = *addr) != 0) {
|
||||||
|
/* Restore the original data before leaving the function.
|
||||||
|
*/
|
||||||
*addr = save[i];
|
*addr = save[i];
|
||||||
|
for (cnt = 1; cnt <= maxsize / sizeof(long); cnt <<= 1) {
|
||||||
|
addr = (volatile ulong *) base + cnt;
|
||||||
|
*addr = save[--i];
|
||||||
|
}
|
||||||
return (0);
|
return (0);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -353,10 +359,17 @@ static long int try_init (volatile memctl8260_t * memctl, ulong sdmr,
|
|||||||
val = *addr;
|
val = *addr;
|
||||||
*addr = save[--i];
|
*addr = save[--i];
|
||||||
if (val != ~cnt) {
|
if (val != ~cnt) {
|
||||||
|
size = cnt * sizeof (long);
|
||||||
|
/* Restore the original data before returning
|
||||||
|
*/
|
||||||
|
for (cnt <<= 1; cnt <= maxsize / sizeof (long); cnt <<= 1) {
|
||||||
|
addr = (volatile ulong *) base + cnt;
|
||||||
|
*addr = save[--i];
|
||||||
|
}
|
||||||
/* Write the actual size to ORx
|
/* Write the actual size to ORx
|
||||||
*/
|
*/
|
||||||
*orx_ptr = orx | ~(cnt * sizeof (long) - 1);
|
*orx_ptr = orx | ~(size - 1);
|
||||||
return (cnt * sizeof (long));
|
return (size);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return (maxsize);
|
return (maxsize);
|
||||||
|
@ -228,7 +228,7 @@ static long int dram_size (long int mamr_value, long int *base,
|
|||||||
volatile immap_t *immap = (immap_t *) CFG_IMMR;
|
volatile immap_t *immap = (immap_t *) CFG_IMMR;
|
||||||
volatile memctl8xx_t *memctl = &immap->im_memctl;
|
volatile memctl8xx_t *memctl = &immap->im_memctl;
|
||||||
volatile long int *addr;
|
volatile long int *addr;
|
||||||
ulong cnt, val;
|
ulong cnt, val, size;
|
||||||
ulong save[32]; /* to make test non-destructive */
|
ulong save[32]; /* to make test non-destructive */
|
||||||
unsigned char i = 0;
|
unsigned char i = 0;
|
||||||
|
|
||||||
@ -248,7 +248,13 @@ static long int dram_size (long int mamr_value, long int *base,
|
|||||||
|
|
||||||
/* check at base address */
|
/* check at base address */
|
||||||
if ((val = *addr) != 0) {
|
if ((val = *addr) != 0) {
|
||||||
|
/* Restore the original data before leaving the function.
|
||||||
|
*/
|
||||||
*addr = save[i];
|
*addr = save[i];
|
||||||
|
for (cnt = 1; cnt <= maxsize / sizeof(long); cnt <<= 1) {
|
||||||
|
addr = (volatile ulong *) base + cnt;
|
||||||
|
*addr = save[--i];
|
||||||
|
}
|
||||||
return (0);
|
return (0);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -259,7 +265,14 @@ static long int dram_size (long int mamr_value, long int *base,
|
|||||||
*addr = save[--i];
|
*addr = save[--i];
|
||||||
|
|
||||||
if (val != (~cnt)) {
|
if (val != (~cnt)) {
|
||||||
return (cnt * sizeof (long));
|
size = cnt * sizeof (long);
|
||||||
|
/* Restore the original data before returning
|
||||||
|
*/
|
||||||
|
for (cnt <<= 1; cnt <= maxsize / sizeof (long); cnt <<= 1) {
|
||||||
|
addr = (volatile ulong *) base + cnt;
|
||||||
|
*addr = save[--i];
|
||||||
|
}
|
||||||
|
return (size);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return (maxsize);
|
return (maxsize);
|
||||||
|
@ -321,7 +321,7 @@ static long int dram_size (long int mamr_value, long int *base,
|
|||||||
volatile immap_t *immap = (immap_t *) CFG_IMMR;
|
volatile immap_t *immap = (immap_t *) CFG_IMMR;
|
||||||
volatile memctl8xx_t *memctl = &immap->im_memctl;
|
volatile memctl8xx_t *memctl = &immap->im_memctl;
|
||||||
volatile long int *addr;
|
volatile long int *addr;
|
||||||
ulong cnt, val;
|
ulong cnt, val, size;
|
||||||
ulong save[32]; /* to make test non-destructive */
|
ulong save[32]; /* to make test non-destructive */
|
||||||
unsigned char i = 0;
|
unsigned char i = 0;
|
||||||
|
|
||||||
@ -341,7 +341,13 @@ static long int dram_size (long int mamr_value, long int *base,
|
|||||||
|
|
||||||
/* check at base address */
|
/* check at base address */
|
||||||
if ((val = *addr) != 0) {
|
if ((val = *addr) != 0) {
|
||||||
|
/* Restore the original data before leaving the function.
|
||||||
|
*/
|
||||||
*addr = save[i];
|
*addr = save[i];
|
||||||
|
for (cnt = 1; cnt <= maxsize / sizeof(long); cnt <<= 1) {
|
||||||
|
addr = (volatile ulong *) base + cnt;
|
||||||
|
*addr = save[--i];
|
||||||
|
}
|
||||||
return (0);
|
return (0);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -352,7 +358,14 @@ static long int dram_size (long int mamr_value, long int *base,
|
|||||||
*addr = save[--i];
|
*addr = save[--i];
|
||||||
|
|
||||||
if (val != (~cnt)) {
|
if (val != (~cnt)) {
|
||||||
return (cnt * sizeof (long));
|
size = cnt * sizeof (long);
|
||||||
|
/* Restore the original data before returning
|
||||||
|
*/
|
||||||
|
for (cnt <<= 1; cnt <= maxsize / sizeof (long); cnt <<= 1) {
|
||||||
|
addr = (volatile ulong *) base + cnt;
|
||||||
|
*addr = save[--i];
|
||||||
|
}
|
||||||
|
return (size);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return (maxsize);
|
return (maxsize);
|
||||||
|
@ -97,7 +97,7 @@ flash_init (void)
|
|||||||
#ifndef CONFIG_P3G4
|
#ifndef CONFIG_P3G4
|
||||||
printf("[");
|
printf("[");
|
||||||
print_size (size, "");
|
print_size (size, "");
|
||||||
printf("@%08lX] ", size>>20, base);
|
printf("@%08lX] ", base);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
if (flash_info[i].flash_id == FLASH_UNKNOWN) {
|
if (flash_info[i].flash_id == FLASH_UNKNOWN) {
|
||||||
|
@ -98,7 +98,8 @@ long int initdram (int board_type)
|
|||||||
volatile memctl8xx_t *memctl = &immap->im_memctl;
|
volatile memctl8xx_t *memctl = &immap->im_memctl;
|
||||||
long int size9;
|
long int size9;
|
||||||
|
|
||||||
upmconfig(UPMA, (uint *)sdram_table, sizeof(sdram_table)/sizeof(uint));
|
upmconfig (UPMA, (uint *) sdram_table,
|
||||||
|
sizeof (sdram_table) / sizeof (uint));
|
||||||
|
|
||||||
/* Refresh clock prescalar */
|
/* Refresh clock prescalar */
|
||||||
memctl->memc_mptpr = CFG_MPTPR;
|
memctl->memc_mptpr = CFG_MPTPR;
|
||||||
@ -126,7 +127,8 @@ long int initdram (int board_type)
|
|||||||
* 9 column mode
|
* 9 column mode
|
||||||
*/
|
*/
|
||||||
|
|
||||||
size9 = dram_size (CFG_MAMR_9COL, (ulong *)SDRAM_BASE_PRELIM, SDRAM_MAX_SIZE) ;
|
size9 = dram_size (CFG_MAMR_9COL, (ulong *) SDRAM_BASE_PRELIM,
|
||||||
|
SDRAM_MAX_SIZE);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Final mapping:
|
* Final mapping:
|
||||||
@ -148,12 +150,13 @@ long int initdram (int board_type)
|
|||||||
* - short between data lines
|
* - short between data lines
|
||||||
*/
|
*/
|
||||||
|
|
||||||
static long int dram_size (long int mamr_value, long int *base, long int maxsize)
|
static long int dram_size (long int mamr_value, long int *base,
|
||||||
|
long int maxsize)
|
||||||
{
|
{
|
||||||
volatile immap_t *immap = (immap_t *) CFG_IMMR;
|
volatile immap_t *immap = (immap_t *) CFG_IMMR;
|
||||||
volatile memctl8xx_t *memctl = &immap->im_memctl;
|
volatile memctl8xx_t *memctl = &immap->im_memctl;
|
||||||
volatile long int *addr;
|
volatile long int *addr;
|
||||||
ulong cnt, val;
|
ulong cnt, val, size;
|
||||||
ulong save[32]; /* to make test non-destructive */
|
ulong save[32]; /* to make test non-destructive */
|
||||||
unsigned char i = 0;
|
unsigned char i = 0;
|
||||||
|
|
||||||
@ -173,7 +176,13 @@ static long int dram_size (long int mamr_value, long int *base, long int maxsize
|
|||||||
|
|
||||||
/* check at base address */
|
/* check at base address */
|
||||||
if ((val = *addr) != 0) {
|
if ((val = *addr) != 0) {
|
||||||
|
/* Restore the original data before leaving the function.
|
||||||
|
*/
|
||||||
*addr = save[i];
|
*addr = save[i];
|
||||||
|
for (cnt = 1; cnt <= maxsize / sizeof(long); cnt <<= 1) {
|
||||||
|
addr = (volatile ulong *) base + cnt;
|
||||||
|
*addr = save[--i];
|
||||||
|
}
|
||||||
return (0);
|
return (0);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -184,7 +193,14 @@ static long int dram_size (long int mamr_value, long int *base, long int maxsize
|
|||||||
*addr = save[--i];
|
*addr = save[--i];
|
||||||
|
|
||||||
if (val != (~cnt)) {
|
if (val != (~cnt)) {
|
||||||
return (cnt * sizeof(long));
|
size = cnt * sizeof (long);
|
||||||
|
/* Restore the original data before returning
|
||||||
|
*/
|
||||||
|
for (cnt <<= 1; cnt <= maxsize / sizeof (long); cnt <<= 1) {
|
||||||
|
addr = (volatile ulong *) base + cnt;
|
||||||
|
*addr = save[--i];
|
||||||
|
}
|
||||||
|
return (size);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return (maxsize);
|
return (maxsize);
|
||||||
|
@ -230,7 +230,7 @@ static long int try_init (volatile memctl8260_t * memctl, ulong sdmr,
|
|||||||
volatile uint *orx_ptr;
|
volatile uint *orx_ptr;
|
||||||
int i;
|
int i;
|
||||||
ulong save[32]; /* to make test non-destructive */
|
ulong save[32]; /* to make test non-destructive */
|
||||||
ulong maxsize;
|
ulong maxsize, size;
|
||||||
|
|
||||||
/* We must be able to test a location outsize the maximum legal size
|
/* We must be able to test a location outsize the maximum legal size
|
||||||
* to find out THAT we are outside; but this address still has to be
|
* to find out THAT we are outside; but this address still has to be
|
||||||
@ -299,7 +299,13 @@ static long int try_init (volatile memctl8260_t * memctl, ulong sdmr,
|
|||||||
*addr = 0;
|
*addr = 0;
|
||||||
|
|
||||||
if ((val = *addr) != 0) {
|
if ((val = *addr) != 0) {
|
||||||
|
/* Restore the original data before leaving the function.
|
||||||
|
*/
|
||||||
*addr = save[i];
|
*addr = save[i];
|
||||||
|
for (cnt = 1; cnt <= maxsize / sizeof(long); cnt <<= 1) {
|
||||||
|
addr = (volatile ulong *) base + cnt;
|
||||||
|
*addr = save[--i];
|
||||||
|
}
|
||||||
return (0);
|
return (0);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -308,10 +314,17 @@ static long int try_init (volatile memctl8260_t * memctl, ulong sdmr,
|
|||||||
val = *addr;
|
val = *addr;
|
||||||
*addr = save[--i];
|
*addr = save[--i];
|
||||||
if (val != ~cnt) {
|
if (val != ~cnt) {
|
||||||
|
size = cnt * sizeof (long);
|
||||||
|
/* Restore the original data before leaving the function.
|
||||||
|
*/
|
||||||
|
for (cnt <<= 1; cnt <= maxsize / sizeof (long); cnt <<= 1) {
|
||||||
|
addr = (volatile ulong *) base + cnt;
|
||||||
|
*addr = save[--i];
|
||||||
|
}
|
||||||
/* Write the actual size to ORx
|
/* Write the actual size to ORx
|
||||||
*/
|
*/
|
||||||
*orx_ptr = orx | ~(cnt * sizeof (long) - 1);
|
*orx_ptr = orx | ~(size - 1);
|
||||||
return (cnt * sizeof (long));
|
return (size);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return (maxsize);
|
return (maxsize);
|
||||||
|
@ -389,7 +389,7 @@ static long int dram_size (long int mamr_value, long int *base,
|
|||||||
volatile immap_t *immap = (immap_t *) CFG_IMMR;
|
volatile immap_t *immap = (immap_t *) CFG_IMMR;
|
||||||
volatile memctl8xx_t *memctl = &immap->im_memctl;
|
volatile memctl8xx_t *memctl = &immap->im_memctl;
|
||||||
volatile long int *addr;
|
volatile long int *addr;
|
||||||
ulong cnt, val;
|
ulong cnt, val, size;
|
||||||
ulong save[32]; /* to make test non-destructive */
|
ulong save[32]; /* to make test non-destructive */
|
||||||
unsigned char i = 0;
|
unsigned char i = 0;
|
||||||
|
|
||||||
@ -409,7 +409,13 @@ static long int dram_size (long int mamr_value, long int *base,
|
|||||||
|
|
||||||
/* check at base address */
|
/* check at base address */
|
||||||
if ((val = *addr) != 0) {
|
if ((val = *addr) != 0) {
|
||||||
|
/* Restore the original data before leaving the function.
|
||||||
|
*/
|
||||||
*addr = save[i];
|
*addr = save[i];
|
||||||
|
for (cnt = 1; cnt <= maxsize / sizeof(long); cnt <<= 1) {
|
||||||
|
addr = (volatile ulong *) base + cnt;
|
||||||
|
*addr = save[--i];
|
||||||
|
}
|
||||||
return (0);
|
return (0);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -420,7 +426,14 @@ static long int dram_size (long int mamr_value, long int *base,
|
|||||||
*addr = save[--i];
|
*addr = save[--i];
|
||||||
|
|
||||||
if (val != (~cnt)) {
|
if (val != (~cnt)) {
|
||||||
return (cnt * sizeof (long));
|
size = cnt * sizeof (long);
|
||||||
|
/* Restore the original data before returning
|
||||||
|
*/
|
||||||
|
for (cnt <<= 1; cnt <= maxsize / sizeof (long); cnt <<= 1) {
|
||||||
|
addr = (volatile ulong *) base + cnt;
|
||||||
|
*addr = save[--i];
|
||||||
|
}
|
||||||
|
return (size);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return (maxsize);
|
return (maxsize);
|
||||||
|
29
fs/fat/fat.c
29
fs/fat/fat.c
@ -33,11 +33,6 @@
|
|||||||
|
|
||||||
#if (CONFIG_COMMANDS & CFG_CMD_FAT)
|
#if (CONFIG_COMMANDS & CFG_CMD_FAT)
|
||||||
|
|
||||||
#ifdef CONFIG_AUTO_UPDATE
|
|
||||||
/* the VFAT code has a bug which breaks auto update */
|
|
||||||
#undef CONFIG_SUPPORT_VFAT
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Convert a string to lowercase.
|
* Convert a string to lowercase.
|
||||||
*/
|
*/
|
||||||
@ -429,6 +424,7 @@ slot2str(dir_slot *slotptr, char *l_name, int *idx)
|
|||||||
* into 'retdent'
|
* into 'retdent'
|
||||||
* Return 0 on success, -1 otherwise.
|
* Return 0 on success, -1 otherwise.
|
||||||
*/
|
*/
|
||||||
|
__u8 get_vfatname_block[MAX_CLUSTSIZE];
|
||||||
static int
|
static int
|
||||||
get_vfatname(fsdata *mydata, int curclust, __u8 *cluster,
|
get_vfatname(fsdata *mydata, int curclust, __u8 *cluster,
|
||||||
dir_entry *retdent, char *l_name)
|
dir_entry *retdent, char *l_name)
|
||||||
@ -447,7 +443,6 @@ get_vfatname(fsdata *mydata, int curclust, __u8 *cluster,
|
|||||||
}
|
}
|
||||||
|
|
||||||
if ((__u8*)slotptr >= nextclust) {
|
if ((__u8*)slotptr >= nextclust) {
|
||||||
__u8 block[MAX_CLUSTSIZE];
|
|
||||||
dir_slot *slotptr2;
|
dir_slot *slotptr2;
|
||||||
|
|
||||||
slotptr--;
|
slotptr--;
|
||||||
@ -457,18 +452,18 @@ get_vfatname(fsdata *mydata, int curclust, __u8 *cluster,
|
|||||||
FAT_ERROR("Invalid FAT entry\n");
|
FAT_ERROR("Invalid FAT entry\n");
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
if (get_cluster(mydata, curclust, block,
|
if (get_cluster(mydata, curclust, get_vfatname_block,
|
||||||
mydata->clust_size * SECTOR_SIZE) != 0) {
|
mydata->clust_size * SECTOR_SIZE) != 0) {
|
||||||
FAT_DPRINT("Error: reading directory block\n");
|
FAT_DPRINT("Error: reading directory block\n");
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
slotptr2 = (dir_slot*) block;
|
slotptr2 = (dir_slot*) get_vfatname_block;
|
||||||
while (slotptr2->id > 0x01) {
|
while (slotptr2->id > 0x01) {
|
||||||
slotptr2++;
|
slotptr2++;
|
||||||
}
|
}
|
||||||
/* Save the real directory entry */
|
/* Save the real directory entry */
|
||||||
realdent = (dir_entry*)slotptr2 + 1;
|
realdent = (dir_entry*)slotptr2 + 1;
|
||||||
while ((__u8*)slotptr2 >= block) {
|
while ((__u8*)slotptr2 >= get_vfatname_block) {
|
||||||
slot2str(slotptr2, l_name, &idx);
|
slot2str(slotptr2, l_name, &idx);
|
||||||
slotptr2--;
|
slotptr2--;
|
||||||
}
|
}
|
||||||
@ -514,12 +509,12 @@ mkcksum(const char *str)
|
|||||||
* Get the directory entry associated with 'filename' from the directory
|
* Get the directory entry associated with 'filename' from the directory
|
||||||
* starting at 'startsect'
|
* starting at 'startsect'
|
||||||
*/
|
*/
|
||||||
|
__u8 get_dentfromdir_block[MAX_CLUSTSIZE];
|
||||||
static dir_entry *get_dentfromdir (fsdata * mydata, int startsect,
|
static dir_entry *get_dentfromdir (fsdata * mydata, int startsect,
|
||||||
char *filename, dir_entry * retdent,
|
char *filename, dir_entry * retdent,
|
||||||
int dols)
|
int dols)
|
||||||
{
|
{
|
||||||
__u16 prevcksum = 0xffff;
|
__u16 prevcksum = 0xffff;
|
||||||
__u8 block[MAX_CLUSTSIZE];
|
|
||||||
__u32 curclust = START (retdent);
|
__u32 curclust = START (retdent);
|
||||||
int files = 0, dirs = 0;
|
int files = 0, dirs = 0;
|
||||||
|
|
||||||
@ -528,12 +523,12 @@ static dir_entry *get_dentfromdir (fsdata * mydata, int startsect,
|
|||||||
dir_entry *dentptr;
|
dir_entry *dentptr;
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
if (get_cluster (mydata, curclust, block,
|
if (get_cluster (mydata, curclust, get_dentfromdir_block,
|
||||||
mydata->clust_size * SECTOR_SIZE) != 0) {
|
mydata->clust_size * SECTOR_SIZE) != 0) {
|
||||||
FAT_DPRINT ("Error: reading directory block\n");
|
FAT_DPRINT ("Error: reading directory block\n");
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
dentptr = (dir_entry *) block;
|
dentptr = (dir_entry *) get_dentfromdir_block;
|
||||||
for (i = 0; i < DIRENTSPERCLUST; i++) {
|
for (i = 0; i < DIRENTSPERCLUST; i++) {
|
||||||
char s_name[14], l_name[256];
|
char s_name[14], l_name[256];
|
||||||
|
|
||||||
@ -544,7 +539,7 @@ static dir_entry *get_dentfromdir (fsdata * mydata, int startsect,
|
|||||||
(dentptr->name[0] & 0x40)) {
|
(dentptr->name[0] & 0x40)) {
|
||||||
prevcksum = ((dir_slot *) dentptr)
|
prevcksum = ((dir_slot *) dentptr)
|
||||||
->alias_checksum;
|
->alias_checksum;
|
||||||
get_vfatname (mydata, curclust, block,
|
get_vfatname (mydata, curclust, get_dentfromdir_block,
|
||||||
dentptr, l_name);
|
dentptr, l_name);
|
||||||
if (dols) {
|
if (dols) {
|
||||||
int isdir = (dentptr->attr & ATTR_DIR);
|
int isdir = (dentptr->attr & ATTR_DIR);
|
||||||
@ -716,11 +711,11 @@ read_bootsectandvi(boot_sector *bs, volume_info *volinfo, int *fatsize)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
__u8 do_fat_read_block[MAX_CLUSTSIZE]; /* Block buffer */
|
||||||
static long
|
static long
|
||||||
do_fat_read (const char *filename, void *buffer, unsigned long maxsize,
|
do_fat_read (const char *filename, void *buffer, unsigned long maxsize,
|
||||||
int dols)
|
int dols)
|
||||||
{
|
{
|
||||||
__u8 block[MAX_CLUSTSIZE]; /* Block buffer */
|
|
||||||
char fnamecopy[2048];
|
char fnamecopy[2048];
|
||||||
boot_sector bs;
|
boot_sector bs;
|
||||||
volume_info volinfo;
|
volume_info volinfo;
|
||||||
@ -792,11 +787,11 @@ do_fat_read (const char *filename, void *buffer, unsigned long maxsize,
|
|||||||
while (1) {
|
while (1) {
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
if (disk_read (cursect, mydata->clust_size, block) < 0) {
|
if (disk_read (cursect, mydata->clust_size, do_fat_read_block) < 0) {
|
||||||
FAT_DPRINT ("Error: reading rootdir block\n");
|
FAT_DPRINT ("Error: reading rootdir block\n");
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
dentptr = (dir_entry *) block;
|
dentptr = (dir_entry *) do_fat_read_block;
|
||||||
for (i = 0; i < DIRENTSPERBLOCK; i++) {
|
for (i = 0; i < DIRENTSPERBLOCK; i++) {
|
||||||
char s_name[14], l_name[256];
|
char s_name[14], l_name[256];
|
||||||
|
|
||||||
@ -806,7 +801,7 @@ do_fat_read (const char *filename, void *buffer, unsigned long maxsize,
|
|||||||
if ((dentptr->attr & ATTR_VFAT) &&
|
if ((dentptr->attr & ATTR_VFAT) &&
|
||||||
(dentptr->name[0] & 0x40)) {
|
(dentptr->name[0] & 0x40)) {
|
||||||
prevcksum = ((dir_slot *) dentptr)->alias_checksum;
|
prevcksum = ((dir_slot *) dentptr)->alias_checksum;
|
||||||
get_vfatname (mydata, 0, block, dentptr, l_name);
|
get_vfatname (mydata, 0, do_fat_read_block, dentptr, l_name);
|
||||||
if (dols == LS_ROOT) {
|
if (dols == LS_ROOT) {
|
||||||
int isdir = (dentptr->attr & ATTR_DIR);
|
int isdir = (dentptr->attr & ATTR_DIR);
|
||||||
char dirc;
|
char dirc;
|
||||||
|
@ -24,6 +24,6 @@
|
|||||||
#ifndef __VERSION_H__
|
#ifndef __VERSION_H__
|
||||||
#define __VERSION_H__
|
#define __VERSION_H__
|
||||||
|
|
||||||
#define U_BOOT_VERSION "U-Boot 1.0.0-pre"
|
#define U_BOOT_VERSION "U-Boot 1.0.0"
|
||||||
|
|
||||||
#endif /* __VERSION_H__ */
|
#endif /* __VERSION_H__ */
|
||||||
|
@ -111,9 +111,9 @@ static int init_baudrate (void)
|
|||||||
|
|
||||||
static int display_banner (void)
|
static int display_banner (void)
|
||||||
{
|
{
|
||||||
|
#ifdef CONFIG_SILENT_CONSOLE
|
||||||
DECLARE_GLOBAL_DATA_PTR;
|
DECLARE_GLOBAL_DATA_PTR;
|
||||||
|
|
||||||
#ifdef CONFIG_SILENT_CONSOLE
|
|
||||||
if (gd->flags & GD_FLG_SILENT)
|
if (gd->flags & GD_FLG_SILENT)
|
||||||
return (0);
|
return (0);
|
||||||
#endif
|
#endif
|
||||||
@ -161,9 +161,9 @@ static int display_dram_config (void)
|
|||||||
|
|
||||||
static void display_flash_config (ulong size)
|
static void display_flash_config (ulong size)
|
||||||
{
|
{
|
||||||
|
#ifdef CONFIG_SILENT_CONSOLE
|
||||||
DECLARE_GLOBAL_DATA_PTR;
|
DECLARE_GLOBAL_DATA_PTR;
|
||||||
|
|
||||||
#ifdef CONFIG_SILENT_CONSOLE
|
|
||||||
if (gd->flags & GD_FLG_SILENT)
|
if (gd->flags & GD_FLG_SILENT)
|
||||||
return;
|
return;
|
||||||
#endif
|
#endif
|
||||||
|
Loading…
x
Reference in New Issue
Block a user