comparison packages/io/flash/current/src/flash.c @ 1400:707a873489c8

* src/flash.c: gcc 3.x vs gcc 2.x problems.
author asl
date Tue, 25 Nov 2003 09:05:31 +0000
parents 587b0b1c6927
children e1d094896914
comparison
equal deleted inserted replaced
1399:1bc2e99ec44b 1400:707a873489c8
70 # warning "Can only enable the flash debugging when configured for RAM startup" 70 # warning "Can only enable the flash debugging when configured for RAM startup"
71 #endif 71 #endif
72 72
73 struct flash_info flash_info; 73 struct flash_info flash_info;
74 74
75 // These are the functions in the HW specific driver we need to call.
76 typedef void code_fun(void*);
77
78 externC code_fun flash_query;
79 externC code_fun flash_erase_block;
80 externC code_fun flash_program_buf;
81 externC code_fun flash_read_buf;
82 externC code_fun flash_lock_block;
83 externC code_fun flash_unlock_block;
84
75 int 85 int
76 flash_init(_printf *pf) 86 flash_init(_printf *pf)
77 { 87 {
78 int err; 88 int err;
79 89
103 { 113 {
104 typedef void code_fun(void*); 114 typedef void code_fun(void*);
105 code_fun *_flash_query; 115 code_fun *_flash_query;
106 int d_cache, i_cache; 116 int d_cache, i_cache;
107 117
108 externC code_fun flash_query;
109 _flash_query = (code_fun*) __anonymizer(&flash_query); 118 _flash_query = (code_fun*) __anonymizer(&flash_query);
110 119
111 HAL_FLASH_CACHES_OFF(d_cache, i_cache); 120 HAL_FLASH_CACHES_OFF(d_cache, i_cache);
112 (*_flash_query)(data); 121 (*_flash_query)(data);
113 HAL_FLASH_CACHES_ON(d_cache, i_cache); 122 HAL_FLASH_CACHES_ON(d_cache, i_cache);
165 #ifdef CYGSEM_IO_FLASH_SOFT_WRITE_PROTECT 174 #ifdef CYGSEM_IO_FLASH_SOFT_WRITE_PROTECT
166 if (plf_flash_query_soft_wp(addr,len)) 175 if (plf_flash_query_soft_wp(addr,len))
167 return FLASH_ERR_PROTECT; 176 return FLASH_ERR_PROTECT;
168 #endif 177 #endif
169 178
170 externC code_fun flash_erase_block;
171 _flash_erase_block = (code_fun*) __anonymizer(&flash_erase_block); 179 _flash_erase_block = (code_fun*) __anonymizer(&flash_erase_block);
172 180
173 block = (unsigned short *)((CYG_ADDRESS)addr & flash_info.block_mask); 181 block = (unsigned short *)((CYG_ADDRESS)addr & flash_info.block_mask);
174 end_addr = (unsigned short *)((CYG_ADDRESS)addr+len); 182 end_addr = (unsigned short *)((CYG_ADDRESS)addr+len);
175 183
252 #ifdef CYGSEM_IO_FLASH_SOFT_WRITE_PROTECT 260 #ifdef CYGSEM_IO_FLASH_SOFT_WRITE_PROTECT
253 if (plf_flash_query_soft_wp(addr,len)) 261 if (plf_flash_query_soft_wp(addr,len))
254 return FLASH_ERR_PROTECT; 262 return FLASH_ERR_PROTECT;
255 #endif 263 #endif
256 264
257 externC code_fun flash_program_buf;
258 _flash_program_buf = (code_fun*) __anonymizer(&flash_program_buf); 265 _flash_program_buf = (code_fun*) __anonymizer(&flash_program_buf);
259 266
260 #ifdef CYGSEM_IO_FLASH_CHATTER 267 #ifdef CYGSEM_IO_FLASH_CHATTER
261 (*flash_info.pf)("... Program from %p-%p at %p: ", (void*)data, 268 (*flash_info.pf)("... Program from %p-%p at %p: ", (void*)data,
262 (void*)(((CYG_ADDRESS)data)+len), (void*)addr); 269 (void*)(((CYG_ADDRESS)data)+len), (void*)addr);
326 #ifdef CYGSEM_IO_FLASH_SOFT_WRITE_PROTECT 333 #ifdef CYGSEM_IO_FLASH_SOFT_WRITE_PROTECT
327 if (plf_flash_query_soft_wp(addr,len)) 334 if (plf_flash_query_soft_wp(addr,len))
328 return FLASH_ERR_PROTECT; 335 return FLASH_ERR_PROTECT;
329 #endif 336 #endif
330 337
331 externC code_fun flash_read_buf;
332 _flash_read_buf = (code_fun*) __anonymizer(&flash_read_buf); 338 _flash_read_buf = (code_fun*) __anonymizer(&flash_read_buf);
333 339
334 #ifdef CYGSEM_IO_FLASH_CHATTER 340 #ifdef CYGSEM_IO_FLASH_CHATTER
335 (*flash_info.pf)("... Read from %p-%p at %p: ", (void*)data, 341 (*flash_info.pf)("... Read from %p-%p at %p: ", (void*)data,
336 (void*)(((CYG_ADDRESS)data)+len), (void*)addr); 342 (void*)(((CYG_ADDRESS)data)+len), (void*)addr);
406 #ifdef CYGSEM_IO_FLASH_SOFT_WRITE_PROTECT 412 #ifdef CYGSEM_IO_FLASH_SOFT_WRITE_PROTECT
407 if (plf_flash_query_soft_wp(addr,len)) 413 if (plf_flash_query_soft_wp(addr,len))
408 return FLASH_ERR_PROTECT; 414 return FLASH_ERR_PROTECT;
409 #endif 415 #endif
410 416
411 externC code_fun flash_lock_block;
412 _flash_lock_block = (code_fun*) __anonymizer(&flash_lock_block); 417 _flash_lock_block = (code_fun*) __anonymizer(&flash_lock_block);
413 418
414 block = (unsigned short *)((CYG_ADDRESS)addr & flash_info.block_mask); 419 block = (unsigned short *)((CYG_ADDRESS)addr & flash_info.block_mask);
415 end_addr = (unsigned short *)((CYG_ADDRESS)addr+len); 420 end_addr = (unsigned short *)((CYG_ADDRESS)addr+len);
416 421
471 #ifdef CYGSEM_IO_FLASH_SOFT_WRITE_PROTECT 476 #ifdef CYGSEM_IO_FLASH_SOFT_WRITE_PROTECT
472 if (plf_flash_query_soft_wp(addr,len)) 477 if (plf_flash_query_soft_wp(addr,len))
473 return FLASH_ERR_PROTECT; 478 return FLASH_ERR_PROTECT;
474 #endif 479 #endif
475 480
476 externC code_fun flash_unlock_block;
477 _flash_unlock_block = (code_fun*) __anonymizer(&flash_unlock_block); 481 _flash_unlock_block = (code_fun*) __anonymizer(&flash_unlock_block);
478 482
479 block = (unsigned short *)((CYG_ADDRESS)addr & flash_info.block_mask); 483 block = (unsigned short *)((CYG_ADDRESS)addr & flash_info.block_mask);
480 end_addr = (unsigned short *)((CYG_ADDRESS)addr+len); 484 end_addr = (unsigned short *)((CYG_ADDRESS)addr+len);
481 485