Commit c429bf0 ("[romprefix] Store boot bus:dev.fn address as autoboot device location") introduced a regression by using register %cx to temporarily hold the PCI bus:dev.fn address, despite the fact that %cx was already being used to hold the stored BIOS stack segment. Consequently, when returning to the BIOS after a failed or cancelled boot attempt, iPXE would end up calling INT 18 with the stack segment set equal to the PCI bus:dev.fn address. Writing to essentially random areas of memory tends to upset even the more robust BIOSes. Fix by using register %ax to temporarily hold the PCI bus:dev.fn address. Reported-by: Anton D. Kachalov <mouse@yandex-team.ru> Tested-by: Anton D. Kachalov <mouse@yandex-team.ru> Signed-off-by: Michael Brown <mcb30@ipxe.org>tags/v1.20.1
 Michael Brown
						
						11 years ago
							Michael Brown
						
						11 years ago
					|  | ||
| 740 | 740 |  | 
| 741 | 741 |  | 
| 742 | 742 |  | 
| 743 |  | |
| 743 |  | |
| 744 | 744 |  | 
| 745 | 745 |  | 
| 746 | 746 |  | 
| 747 | 747 |  | 
| 748 | 748 |  | 
| 749 |  | |
| 749 |  | |
| 750 | 750 |  | 
| 751 | 751 |  | 
| 752 | 752 |  |