Mercurial > ecos
diff packages/redboot/current/src/flash.c @ 2211:acfe2ec52590
Fix build problems on systems without FLASH locking
| author | gthomas |
|---|---|
| date | Tue, 23 May 2006 11:56:45 +0000 |
| parents | eee88a59c155 |
| children | 19ce76dd5f64 |
line wrap: on
line diff
--- a/packages/redboot/current/src/flash.c +++ b/packages/redboot/current/src/flash.c @@ -295,12 +295,14 @@ fis_update_directory(int autolock, int e { void* err_addr=0; +#ifdef CYGHWR_IO_FLASH_BLOCK_LOCKING #ifdef CYGSEM_REDBOOT_FLASH_LOCK_SPECIAL // Ensure [quietly] that the directory is unlocked before trying to update and locked again afterwards int do_autolock=1; #else int do_autolock=autolock; #endif +#endif #ifdef CYGOPT_REDBOOT_REDUNDANT_FIS @@ -330,8 +332,10 @@ fis_update_directory(int autolock, int e flash_program(tmp_fis_addr, img->u.valid_info.valid_flag, sizeof(img->u.valid_info.valid_flag), (void **)&err_addr); } +#ifdef CYGHWR_IO_FLASH_BLOCK_LOCKING if (do_autolock) flash_lock((void *)fis_addr, fisdir_size, (void **)&err_addr); +#endif #else // CYGOPT_REDBOOT_REDUNDANT_FIS int blk_size = fisdir_size; @@ -343,8 +347,10 @@ fis_update_directory(int autolock, int e conf_endian_fixup((char *)fis_work_block+fisdir_size); blk_size += cfg_size; #endif +#ifdef CYGHWR_IO_FLASH_BLOCK_LOCKING if (do_autolock) - flash_unlock((void *)fis_addr, blk_size, (void **)&err_addr); + flash_unlock((void *)fis_addr, blk_size, (void **)&err_addr); +#endif if ((stat = flash_erase(fis_addr, blk_size, (void **)&err_addr)) != 0) { diag_printf("Error erasing FIS directory at %p: %s\n", err_addr, flash_errmsg(stat)); @@ -356,8 +362,10 @@ fis_update_directory(int autolock, int e } } fis_endian_fixup(fis_work_block); +#ifdef CYGHWR_IO_FLASH_BLOCK_LOCKING if (do_autolock) flash_lock((void *)fis_addr, blk_size, (void **)&err_addr); +#endif #endif // CYGOPT_REDBOOT_REDUNDANT_FIS
