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 @@
                 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 @@
     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;
