diff options
author | Helge Deller <deller@gmx.de> | 2019-06-30 00:18:05 +0200 |
---|---|---|
committer | Helge Deller <deller@gmx.de> | 2019-08-16 04:00:53 +0200 |
commit | c8625df48fa0be4b791c20e7825cde60aaa747a7 (patch) | |
tree | e28f50c8684003f7cbea9e61613242d9719f5d34 | |
parent | 505624a1305046d2d3c6098cd551c2688770f714 (diff) | |
download | seabios-hppa-c8625df48fa0be4b791c20e7825cde60aaa747a7.zip seabios-hppa-c8625df48fa0be4b791c20e7825cde60aaa747a7.tar.gz seabios-hppa-c8625df48fa0be4b791c20e7825cde60aaa747a7.tar.bz2 |
Implement SeaBIOS returning additional addresses. Fixes HP-UX boot.
-rw-r--r-- | src/parisc/parisc.c | 19 |
1 files changed, 16 insertions, 3 deletions
diff --git a/src/parisc/parisc.c b/src/parisc/parisc.c index 41895bc..e038ddc 100644 --- a/src/parisc/parisc.c +++ b/src/parisc/parisc.c @@ -1235,11 +1235,24 @@ static int pdc_system_map(unsigned int *arg) memset(result, 0, 32*sizeof(long)); result[0] = hpa; // .mod_addr for PDC_IODC result[1] = 1; // .mod_pgs number of pages (FIXME: only graphics has more, e.g. 0x2000) - result[2] = 0; // FIXME: additional addresses - + result[2] = parisc_devices[hpa_index].num_addr; // additional addresses return PDC_OK; + case PDC_FIND_ADDRESS: - break; + hpa_index = ARG3; + if (hpa_index >= ARRAY_SIZE(parisc_devices)) + return PDC_NE_MOD; // Module not found + hpa = parisc_devices[hpa_index].hpa; + if (!hpa) + return PDC_NE_MOD; // Module not found + + memset(result, 0, 32*sizeof(long)); + ARG4 -= 1; + if (ARG4 >= parisc_devices[hpa_index].num_addr) + return PDC_INVALID_ARG; + result[0] = parisc_devices[hpa_index].add_addr[ARG4]; + result[1] = 1; // .mod_pgs number of pages (FIXME: only graphics has more, e.g. 0x2000) + return PDC_OK; case PDC_TRANSLATE_PATH: mod_path = (struct pdc_module_path *)ARG3; |