Mercurial > ecos
diff packages/redboot/current/src/fs/e2fs.c @ 2614:6cbecf3cc2e4
* src/fconfig.c, src/flash.c, src/io.c, src/load.c, src/main.c,
src/xyzModem.c, include/redboot.h: more signed vs. unsigned char
issues.
* src/fs/e2fs.c (e2fs_mount): Avoid compiler strict aliasing
problem.
* include/fis.h (struct fis_image_desc): Make fis name be
signed char to reduce warnings.
* include/flash_config.h (struct _config): Make config_data
be signed char to reduce warnings.
* include/redboot.h: mon_write_char and mon_read_char_with_timeout
take unsigned char, to reduce warnings.
* src/parse.c: Add const to err_printf format.
* src/fconfig.c: Many signed/unsigned warning cleanups.
* src/io.c: Ditto.
* src/xyzModem.c: Ditto.
* src/load.c: Ditto.
* src/flash.c: Ditto.
* src/fconfig.c (flash_write_config): Warning cleanup.
* src/net/net_io.c (do_ip_addr): Warning cleanup.
* src/flash.c (fis_create): Warning cleanup.
* include/net/net.h: Include redboot.h for tick functions.
* include/net/net.h: Pull tick functions into redboot.h as they
are used more widely than the net stack.
* include/redboot.h: Declare tick functions.
* src/main.c (cyg_start): Correctly compute workspace_end so it
works even on high RAM values [bug #1000202].
Don't use workspace_end directly for context init - it gets
modified.
(do_go): Don't use workspace_end directly for context init -
it gets modified.
| author | jlarmour |
|---|---|
| date | Tue, 11 Nov 2008 04:32:10 +0000 |
| parents | 8285bebc3a89 |
| children | 74dbf4c3f2e1 |
line wrap: on
line diff
--- a/packages/redboot/current/src/fs/e2fs.c +++ b/packages/redboot/current/src/fs/e2fs.c @@ -10,6 +10,7 @@ // This file is part of eCos, the Embedded Configurable Operating System. // Copyright (C) 1998, 1999, 2000, 2001, 2002 Red Hat, Inc. // Copyright (C) 2003 Gary Thomas <gary@mind.be> +// Copyright (C) 2008 eCosCentric Limited. // // eCos is free software; you can redistribute it and/or modify it under // the terms of the GNU General Public License as published by the Free @@ -160,13 +161,16 @@ static int e2fs_mount(partition_t *part, e2fs_desc_t *e2fs) { int sb_block = 1; - cyg_uint32 sb_buf[E2FS_MIN_BLOCK_SIZE/sizeof(cyg_uint32)]; - struct e2fs_super_block *sb = (struct e2fs_super_block *)sb_buf; + union { + cyg_uint32 sb_buf[E2FS_MIN_BLOCK_SIZE/sizeof(cyg_uint32)]; + struct e2fs_super_block sbdata; + } sbdata_union; + struct e2fs_super_block *sb=&sbdata_union.sbdata; e2fs->part = part; if (!PARTITION_READ(part, sb_block*(E2FS_MIN_BLOCK_SIZE/SECTOR_SIZE), - (cyg_uint32 *)sb, E2FS_MIN_BLOCK_SIZE/SECTOR_SIZE)) + &sbdata_union.sb_buf[0], E2FS_MIN_BLOCK_SIZE/SECTOR_SIZE)) return -1; if (SWAB_LE16(sb->magic) != E2FS_SUPER_MAGIC) {
