| 666 | } |
| 667 | |
| 668 | ssize_t fsp_component_relocate(uintptr_t new_addr, void *fsp, size_t size) |
| 669 | { |
| 670 | size_t offset; |
| 671 | size_t fih_offset; |
| 672 | |
| 673 | offset = 0; |
| 674 | fih_offset = 0; |
| 675 | while (offset < size) { |
| 676 | ssize_t nparsed; |
| 677 | |
| 678 | /* Relocate each FV within the FSP region. */ |
| 679 | nparsed = relocate_fvh(new_addr, fsp, size, offset, &fih_offset); |
| 680 | |
| 681 | /* FV should be larger than 0 or failed to parse. */ |
| 682 | if (nparsed <= 0) { |
| 683 | printk(BIOS_ERR, "FV @ offset %zx relocation failed\n", |
| 684 | offset); |
| 685 | return -1; |
| 686 | } |
| 687 | |
| 688 | offset += nparsed; |
| 689 | } |
| 690 | |
| 691 | return relocate_remaining_items(fsp, size, new_addr, fih_offset); |
| 692 | } |
| 693 | |
| 694 | ssize_t fsp1_1_relocate(uintptr_t new_addr, void *fsp, size_t size) |
| 695 | { |
no test coverage detected