aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHelge Deller <deller@gmx.de>2023-10-29 07:43:07 +0100
committerHelge Deller <deller@gmx.de>2023-10-31 08:26:22 +0100
commite842ca02e69080dd81f881bf1f28bb073e3352f2 (patch)
treec50d7c42b3c0aa3681639a68e5456e43e323d1c1
parentf1c712f04bd60249a8bad685a65a7984c94f74f8 (diff)
downloadseabios-hppa-e842ca02e69080dd81f881bf1f28bb073e3352f2.zip
seabios-hppa-e842ca02e69080dd81f881bf1f28bb073e3352f2.tar.gz
seabios-hppa-e842ca02e69080dd81f881bf1f28bb073e3352f2.tar.bz2
parisc: Use correct CPU and FPU model numbers
Signed-off-by: Helge Deller <deller@gmx.de>
-rw-r--r--src/parisc/c3700.h4
-rw-r--r--src/parisc/parisc.c20
2 files changed, 13 insertions, 11 deletions
diff --git a/src/parisc/c3700.h b/src/parisc/c3700.h
index e322da2..5d898e6 100644
--- a/src/parisc/c3700.h
+++ b/src/parisc/c3700.h
@@ -4,11 +4,11 @@
#define PARISC_MODEL "9000/785/C3700"
-#define PARISC_PDC_MODEL 0x5dc0, 0x481, 0x0, 0x2, 2004003700, 0x100000f0, 0x8, 0xb2, 0xb2
+#define PARISC_PDC_MODEL 0x5dc0, 0x481, 0x0, 0x2, 2004003700, 0x100000f0, 0x8, 0xb2, 0xb2, 1
#define PARISC_PDC_VERSION 0x0301
-#define PARISC_PDC_CPUID 0x01e8
+#define PARISC_PDC_CPUID 0x26b
#define PARISC_PDC_CAPABILITIES 0x0007
diff --git a/src/parisc/parisc.c b/src/parisc/parisc.c
index a80f857..5946776 100644
--- a/src/parisc/parisc.c
+++ b/src/parisc/parisc.c
@@ -1425,17 +1425,22 @@ static int pdc_model(unsigned int *arg)
result[0] = machine_B160L.pdc_cpuid;
return PDC_OK;
case PDC_MODEL_CAPABILITIES:
- // result[0] = current_machine->pdc_caps;
- result[0] = PDC_MODEL_OS32; /* we only support 32-bit PDC for now. */
+ result[0] = current_machine->pdc_caps;
+ result[0] |= PDC_MODEL_OS32; /* we only support 32-bit PDC for now. */
if (0 && cpu_bit_width == 64) /* and maybe 64-bit */
result[0] |= PDC_MODEL_OS64; /* this means 64-bit PDC calls are supported */
else
result[0] &= ~PDC_MODEL_OS64;
+ result[0] &= ~0x4; /* remove NP flag, our IO-PDIR is coherent and needs no flush */
+ result[0] &= ~0x8; /* remove SV flag, we need no virtual index in SBA */
+ result[0] &= ~0x30; /* remove NVA bits, we have no issues with non-equiv. aliasing */
return PDC_OK;
case PDC_MODEL_GET_INSTALL_KERNEL:
// No need to provide a special install kernel during installation of HP-UX
return PDC_BAD_OPTION;
case PDC_MODEL_GET_PLATFORM_INFO:
+ if (1) /* not supported on B160L or C3700 */
+ return PDC_BAD_OPTION;
model_str = has_astro ? "A6057A" : "9000/778";
strtcpy((char *)ARG2, model_str, 16);
strtcpy((char *)ARG3, model_str, 16);
@@ -1528,15 +1533,12 @@ static int pdc_coproc(unsigned int *arg)
switch (option) {
case PDC_COPROC_CFG:
memset(result, 0, 32 * sizeof(unsigned long));
- /* Set one bit per cpu in ccr_functional and ccr_present.
- Ignore that specification only mentions 8 bits for cr10
- and set all FPUs functional */
- mask = 1UL << 7;
- mtctl(mask, 10); /* initialize cr10 */
+ mask = 1UL << 7; /* bit for FPU available/functional */
+ mtctl(mask, 10); /* initialize cr10 */
result[0] = mask;
result[1] = mask;
- result[17] = 1; // Revision
- result[18] = has_astro ? 0x0f : 0x13; // Model
+ result[17] = 1; /* Revision */
+ result[18] = current_machine->pdc_cpuid >> 5; /* CPU Model */
return PDC_OK;
}
return PDC_BAD_OPTION;