net: phy: Add support for all targets which requires MANUAL_RELOC
Targets with CONFIG_NEEDS_MANUAL_RELOC do not use REL/RELA relocation (mostly only GOT) where functions aray are not updated. This patch is fixing function pointers passed to phy_register function. This patch was tested on Microblaze architecture. Signed-off-by: Michal Simek <michal.simek@xilinx.com> Acked-by: Joe Hershberger <joe.hershberger@ni.com>
This commit is contained in:
		
							parent
							
								
									793ea94770
								
							
						
					
					
						commit
						abbfcbe58e
					
				|  | @ -21,6 +21,8 @@ | ||||||
| #include <linux/err.h> | #include <linux/err.h> | ||||||
| #include <linux/compiler.h> | #include <linux/compiler.h> | ||||||
| 
 | 
 | ||||||
|  | DECLARE_GLOBAL_DATA_PTR; | ||||||
|  | 
 | ||||||
| /* Generic PHY support and helper functions */ | /* Generic PHY support and helper functions */ | ||||||
| 
 | 
 | ||||||
| /**
 | /**
 | ||||||
|  | @ -494,6 +496,20 @@ int phy_register(struct phy_driver *drv) | ||||||
| 	INIT_LIST_HEAD(&drv->list); | 	INIT_LIST_HEAD(&drv->list); | ||||||
| 	list_add_tail(&drv->list, &phy_drivers); | 	list_add_tail(&drv->list, &phy_drivers); | ||||||
| 
 | 
 | ||||||
|  | #ifdef CONFIG_NEEDS_MANUAL_RELOC | ||||||
|  | 	if (drv->probe) | ||||||
|  | 		drv->probe += gd->reloc_off; | ||||||
|  | 	if (drv->config) | ||||||
|  | 		drv->config += gd->reloc_off; | ||||||
|  | 	if (drv->startup) | ||||||
|  | 		drv->startup += gd->reloc_off; | ||||||
|  | 	if (drv->shutdown) | ||||||
|  | 		drv->shutdown += gd->reloc_off; | ||||||
|  | 	if (drv->readext) | ||||||
|  | 		drv->readext += gd->reloc_off; | ||||||
|  | 	if (drv->writeext) | ||||||
|  | 		drv->writeext += gd->reloc_off; | ||||||
|  | #endif | ||||||
| 	return 0; | 	return 0; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
		Loading…
	
		Reference in New Issue