[PATCH] Fix relocation problem with "new" get_dev() function
This patch enables the "new" get_dev() function for block devices introduced by Grant Likely to be used on systems that still suffer from the relocation problems (manual relocation neede because of problems with linker script). Hopefully we can resolve this relocation issue soon for all platform so we don't need this additional code anymore. Signed-off-by: Stefan Roese <sr@denx.de>
This commit is contained in:
		
							parent
							
								
									d93e2212f9
								
							
						
					
					
						commit
						751bb57107
					
				
							
								
								
									
										12
									
								
								disk/part.c
								
								
								
								
							
							
						
						
									
										12
									
								
								disk/part.c
								
								
								
								
							|  | @ -64,13 +64,25 @@ static const struct block_drvr block_drvr[] = { | |||
| 	{ }, | ||||
| }; | ||||
| 
 | ||||
| #ifndef CFG_FIXUP_RELOCATION | ||||
| DECLARE_GLOBAL_DATA_PTR; | ||||
| #endif | ||||
| 
 | ||||
| block_dev_desc_t *get_dev(char* ifname, int dev) | ||||
| { | ||||
| 	const struct block_drvr *drvr = block_drvr; | ||||
| 
 | ||||
| 	while (drvr->name) { | ||||
| #ifndef CFG_FIXUP_RELOCATION | ||||
| 		block_dev_desc_t* (*reloc_get_dev)(int dev); | ||||
| 
 | ||||
| 		reloc_get_dev = drvr->get_dev + gd->reloc_off; | ||||
| 		if (strncmp(ifname, drvr->name, strlen(drvr->name)) == 0) | ||||
| 			return reloc_get_dev(dev); | ||||
| #else | ||||
| 		if (strncmp(ifname, drvr->name, strlen(drvr->name)) == 0) | ||||
| 			return drvr->get_dev(dev); | ||||
| #endif | ||||
| 		drvr++; | ||||
| 	} | ||||
| 	return NULL; | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue