# HG changeset patch # User gthomas # Date 1062935336 0 # Node ID 0e41ddaf36fe1125f60fe32302d8b81329dab7d8 # Parent e8111345b655528b2d4aa299d23335520951d33b Flesh out exported FIS functions - from Patrick Doyle diff --git a/packages/hal/common/current/ChangeLog b/packages/hal/common/current/ChangeLog --- a/packages/hal/common/current/ChangeLog +++ b/packages/hal/common/current/ChangeLog @@ -1,3 +1,9 @@ +2003-09-04 Patrick Doyle + + * include/hal_if.h: + * src/hal_if.c (flash_fis_op): Added support for the rest of the + FIS operations. + 2003-08-06 Bob Koninckx * src/drv_api.c: Added definition of cyg_interrupt_post_dsr() for diff --git a/packages/hal/common/current/include/hal_if.h b/packages/hal/common/current/include/hal_if.h --- a/packages/hal/common/current/include/hal_if.h +++ b/packages/hal/common/current/include/hal_if.h @@ -655,8 +655,14 @@ static __inline__ _rt_ __call_VV3(CYGNUM_CALL_IF_FLASH_FIS_OP, __call_if_flash_fis_op_fn_t, cyg_bool, int, char *, void *) #define CYGACC_CALL_IF_FLASH_FIS_OP_SET(_x_) \ hal_virtual_vector_table[CYGNUM_CALL_IF_FLASH_FIS_OP]=(CYG_ADDRWORD)(_x_) -#define CYGNUM_CALL_IF_FLASH_FIS_GET_FLASH_BASE (0) -#define CYGNUM_CALL_IF_FLASH_FIS_GET_SIZE (1) +#define CYGNUM_CALL_IF_FLASH_FIS_GET_FLASH_BASE (0) +#define CYGNUM_CALL_IF_FLASH_FIS_GET_SIZE (1) +#define CYGNUM_CALL_IF_FLASH_FIS_GET_MEM_BASE (2) +#define CYGNUM_CALL_IF_FLASH_FIS_GET_ENTRY_POINT (3) +#define CYGNUM_CALL_IF_FLASH_FIS_GET_DATA_LENGTH (4) +#define CYGNUM_CALL_IF_FLASH_FIS_GET_DESC_CKSUM (5) +#define CYGNUM_CALL_IF_FLASH_FIS_GET_FILE_CKSUM (6) + // These need to be kept uptodate with the (unadorned) masters // in RedBoot's flash_config.h: diff --git a/packages/hal/common/current/src/hal_if.c b/packages/hal/common/current/src/hal_if.c --- a/packages/hal/common/current/src/hal_if.c +++ b/packages/hal/common/current/src/hal_if.c @@ -124,29 +124,49 @@ static __call_if_flash_fis_op_fn_t flash static cyg_bool flash_fis_op( int op, char *name, void *val) { - cyg_bool res = false; - struct fis_image_desc *fis; - int num; + cyg_bool res = false; + struct fis_image_desc *fis; + int num; - CYGARC_HAL_SAVE_GP(); - fis = fis_lookup(name, &num); - if(fis != NULL) - { - switch ( op ) { - case CYGNUM_CALL_IF_FLASH_FIS_GET_FLASH_BASE: - *(CYG_ADDRESS *)val = fis->flash_base; - res = true; - break; - case CYGNUM_CALL_IF_FLASH_FIS_GET_SIZE: - *(unsigned long *)val = fis->size; - res = true; - break; - default: - break; - } - } - CYGARC_HAL_RESTORE_GP(); - return res; + CYGARC_HAL_SAVE_GP(); + fis = fis_lookup(name, &num); + if(fis != NULL) + { + switch ( op ) { + case CYGNUM_CALL_IF_FLASH_FIS_GET_FLASH_BASE: + *(CYG_ADDRESS *)val = fis->flash_base; + res = true; + break; + case CYGNUM_CALL_IF_FLASH_FIS_GET_SIZE: + *(unsigned long *)val = fis->size; + res = true; + break; + case CYGNUM_CALL_IF_FLASH_FIS_GET_MEM_BASE: + *(CYG_ADDRESS *)val = fis->mem_base; + res = true; + break; + case CYGNUM_CALL_IF_FLASH_FIS_GET_ENTRY_POINT: + *(CYG_ADDRESS *)val = fis->entry_point; + res = true; + break; + case CYGNUM_CALL_IF_FLASH_FIS_GET_DATA_LENGTH: + *(unsigned long *)val = fis->data_length; + res = true; + break; + case CYGNUM_CALL_IF_FLASH_FIS_GET_DESC_CKSUM: + *(unsigned long *)val = fis->desc_cksum; + res = true; + break; + case CYGNUM_CALL_IF_FLASH_FIS_GET_FILE_CKSUM: + *(unsigned long *)val = fis->file_cksum; + res = true; + break; + default: + break; + } + } + CYGARC_HAL_RESTORE_GP(); + return res; } #endif