diff --git a/src/parisc/parisc.c b/src/parisc/parisc.c
index 87200bd..729afc7 100644
--- a/src/parisc/parisc.c
+++ b/src/parisc/parisc.c
@@ -1290,6 +1290,10 @@
         DO(PDC_PCI_INDEX)
         DO(PDC_RELOCATE)
         DO(PDC_INITIATOR)
+        DO(PDC_PAT_CELL)
+        DO(PDC_PAT_CHASSIS_LOG)
+        DO(PDC_PAT_CPU)
+        DO(PDC_PAT_PD)
         DO(PDC_LINK)
 #undef DO
         return "UNKNOWN!";
@@ -2083,9 +2087,11 @@
 
     switch (option) {
         case PDC_PAT_CELL_GET_NUMBER:
-            cell_info->cell_num = 0;
-            cell_info->cell_loc = 0;
+            // cell_info->cell_num = cell_info->cell_loc = 0;
+            memset(cell_info, 0, 32*sizeof(long long));
             return PDC_OK;
+        case PDC_PAT_CELL_GET_INFO:
+            return PDC_BAD_OPTION; /* optional on single-cell machines */
         default:
             break;
     }
@@ -2093,6 +2099,34 @@
     return PDC_BAD_OPTION;
 }
 
+static int pdc_pat_cpu(unsigned int *arg)
+{
+    unsigned long option = ARG1;
+    unsigned long *result = (unsigned long *)ARG2;
+    unsigned long hpa;
+
+    switch (option) {
+        case PDC_PAT_CPU_GET_NUMBER:
+            hpa = ARG3;
+            result[0] = index_of_CPU_HPA(hpa);
+            result[1] = hpa;    /* location */
+            result[2] = 0;      /* num siblings */
+            return PDC_OK;
+        case PDC_PAT_CPU_GET_HPA:
+            if ((unsigned long)ARG3 >= smp_cpus)
+                return PDC_INVALID_ARG;
+            hpa = CPU_HPA_IDX(ARG3);
+            result[0] = hpa;
+            result[1] = hpa;    /* location */
+            result[2] = 0;      /* num siblings */
+            return PDC_OK;
+        default:
+            break;
+    }
+    dprintf(0, "\n\nSeaBIOS: Unimplemented PDC_PAT_CPU OPTION %lu called with ARG2=%x ARG3=%x ARG4=%x\n", option, ARG2, ARG3, ARG4);
+    return PDC_BAD_OPTION;
+}
+
 static int pdc_pat_pd(unsigned int *arg)
 {
     unsigned long option = ARG1;
@@ -2254,6 +2288,9 @@
             dprintf(0, "\n\nSeaBIOS: PDC_PAT_CHASSIS_LOG OPTION %lu called with ARG2=%x ARG3=%x ARG4=%x\n", option, ARG2, ARG3, ARG4);
             return PDC_BAD_PROC;
 
+        case PDC_PAT_CPU:
+            return pdc_pat_cpu(arg);
+
         case PDC_PAT_PD:
             return pdc_pat_pd(arg);
     }
