diff options
author | Helge Deller <deller@gmx.de> | 2019-03-14 20:38:07 +0100 |
---|---|---|
committer | Helge Deller <deller@gmx.de> | 2019-03-14 20:38:07 +0100 |
commit | dca21bdd9745513662322e3fb02bbd03dfb057d3 (patch) | |
tree | 6cfd6e34dfaa48204a3728eda441b214e400a329 | |
parent | 7d3e970c4ef3b53f1af1d4e60c1751b150a5fe52 (diff) | |
download | seabios-hppa-dca21bdd9745513662322e3fb02bbd03dfb057d3.zip seabios-hppa-dca21bdd9745513662322e3fb02bbd03dfb057d3.tar.gz seabios-hppa-dca21bdd9745513662322e3fb02bbd03dfb057d3.tar.bz2 |
Fix CPU HPA mod path, needs fix for qemu as well!
-rw-r--r-- | src/parisc/b160l.h | 4 | ||||
-rw-r--r-- | src/parisc/hppa_hardware.h | 2 | ||||
-rw-r--r-- | src/parisc/parisc.c | 11 |
3 files changed, 11 insertions, 6 deletions
diff --git a/src/parisc/b160l.h b/src/parisc/b160l.h index b5d2f5a..27857cc 100644 --- a/src/parisc/b160l.h +++ b/src/parisc/b160l.h @@ -436,7 +436,7 @@ static struct pdc_iodc iodc_data_hpa_f8000000 = { #define HPA_fff10000_DESCRIPTION "Merlin L2 160 (9000/778/B160L)" static struct pdc_system_map_mod_info mod_info_hpa_fff10000 = { - .mod_addr = 0xfff10000, + .mod_addr = CPU_HPA, .mod_pgs = 0x1, .add_addrs = 0x0, }; @@ -609,7 +609,7 @@ static struct pdc_iodc iodc_data_hpa_fff81000 = { .mod_path = &mod_path_hpa_f8000000,\ .num_addr = HPA_f8000000_num_addr,\ .add_addr = { HPA_f8000000_add_addr } },\ - { .hpa = 0xfff10000,\ + { .hpa = CPU_HPA,\ .iodc = &iodc_data_hpa_fff10000,\ .mod_info = &mod_info_hpa_fff10000,\ .mod_path = &mod_path_hpa_fff10000,\ diff --git a/src/parisc/hppa_hardware.h b/src/parisc/hppa_hardware.h index 919cf60..28be7d1 100644 --- a/src/parisc/hppa_hardware.h +++ b/src/parisc/hppa_hardware.h @@ -31,7 +31,7 @@ #define LASI_PS2KBD_HPA 0xffd08000 #define LASI_PS2MOU_HPA 0xffd08100 #define LASI_GFX_HPA 0xf8000000 -#define CPU_HPA 0xfff10000 +#define CPU_HPA 0xfffb0000 #define MEMORY_HPA 0xfffbf000 #define PCI_HPA DINO_HPA /* PCI bus */ diff --git a/src/parisc/parisc.c b/src/parisc/parisc.c index b0053c7..27dbc97 100644 --- a/src/parisc/parisc.c +++ b/src/parisc/parisc.c @@ -179,7 +179,7 @@ static struct drive_s *parisc_boot_cdrom; // first DVD or CD-ROM static struct pdc_module_path mod_path_emulated_drives = { .path = { .flags = 0x0, .bc = { 0xff, 0xff, 0xff, 0x8, 0x0, 0x0 }, .mod = 0x0 }, - .layers = { 0xAA, 0xBB, 0x0, 0x0, 0x0, 0x0 } // AA/BB gets replaced + .layers = { 0x0, 0x0, 0x0, 0x0, 0x0, 0x0 } // first two layer entries get replaced }; /******************************************************** @@ -280,7 +280,12 @@ static void remove_parisc_devices(unsigned int num_cpus) p++; } - /* Generate CPU list */ + /* Fix monarch CPU */ + BUG_ON(!cpu_dev); + cpu_dev->mod_info->mod_addr = CPU_HPA; + cpu_dev->mod_path->path.mod = (CPU_HPA - DINO_HPA) / 0x1000; + + /* Generate other CPU devices */ for (i = 1; i < num_cpus; i++) { unsigned long hpa = CPU_HPA + i*0x1000; @@ -292,7 +297,7 @@ static void remove_parisc_devices(unsigned int num_cpus) parisc_devices[t].mod_info = &modinfo[i]; modpath[i] = *cpu_dev->mod_path; - modpath[i].path.mod = 128 + i; + modpath[i].path.mod = (hpa - DINO_HPA) / 0x1000; parisc_devices[t].mod_path = &modpath[i]; t++; |