diff --git a/linux-ramdump-parser-v2/tlbdumplib.py b/linux-ramdump-parser-v2/tlbdumplib.py
index f7dd13dc7c04d07befb1d4fbb78aeb62b1453014..03e9f77793224c1e9bb5b85e80d0c84c715618b3 100644
--- a/linux-ramdump-parser-v2/tlbdumplib.py
+++ b/linux-ramdump-parser-v2/tlbdumplib.py
@@ -274,6 +274,108 @@ class L1_TLB_A53(TlbDumpType_v1):
         self.NumSets = 0x100
         self.NumWays = 4
 
+class L1_TLB_KRYO3XX_GOLD(TlbDumpType_v2):
+    def __init__(self):
+        super(L1_TLB_KRYO3XX_GOLD, self).__init__()
+        self.unsupported_header_offset = 0
+        self.LineSize = 4
+        self.NumSetsRam0 =  0x100
+        self.NumSetsRam1 =  0x3c
+        self.NumWaysRam0 = 4
+        self.NumWaysRam1 = 2
+
+    def parse_tag_fn(self, output, data, nset, nway, ram, offset):
+        #tlb_type = self.parse_tlb_type(data)
+
+        s1_mode = (data[0] >> 2) & 0x3
+
+        s1_level = data[0] & 0x3
+
+        pa_l = data[2] >> 14
+        pa_h =  (data[3])& 0x1fff
+        pa = (pa_h << 18 | pa_l) * 0x1000
+        pa = pa + offset
+
+        va_l = (data[1] >> 10)
+        va_h = (data[2]) & 0x3ff
+        va = ((va_h << 22) | (va_l)) * 0x1000
+        va = va + offset
+
+        if ((va >> 40) & 0xff )== 0xff:
+            va = va + 0xffff000000000000
+
+        valid = (data[2] >> 11) & 0x1
+
+        vmid_1 = (data[0] >> 26) & 0x3f
+        vmid_2 = data[1] & 0x3ff
+        vmid = (vmid_2 << 6) | vmid_1
+
+        asid = (data[0] >> 10) & 0xffff
+
+        size = self.parse_size(data, ram, tlb_type)
+        output.append(ram)
+        output.append("N/A")
+        output.append(pa)
+        output.append(va)
+        output.append(valid)
+        output.append(vmid)
+        output.append(asid)
+        output.append(s1_mode)
+        output.append(s1_level)
+        output.append(size)
+
+    def parse_tlb_type(self, data):
+        type_num = (data[3] >> 20) & 0x1
+        if type_num == 0x0:
+            s1_level = data[0] & 0x3
+            if s1_level == 0x3:
+                return "IPA"
+            else:
+                return "REG"
+        else:
+            return "WALK"
+
+    def parse_size(self, data, ram, tlb_type):
+        size = (data[0] >> 6) & 0x7
+        if ram == 0:
+            if size == 0x0:
+                return "4KB"
+            elif size == 0x1:
+                return "16KB"
+            else:
+                return "64KB"
+        else:
+            if size == 0x0:
+                return "1MB"
+            elif size == 0x1:
+                return "2MB"
+            elif size == 0x2:
+                return "16MB"
+            elif size == 0x3:
+                return "32MB"
+            elif size == 0x4:
+                return "512MB"
+            else:
+                return "1GB"
+
+class L1_TLB_KRYO3XX_SILVER(TlbDumpType_v1):
+    def __init__(self):
+        super(L1_TLB_KRYO3XX_SILVER, self).__init__()
+        self.unsupported_header_offset = 0
+        self.LineSize = 4
+        self.NumSets = 0x100
+        self.NumWays = 4
+
+# "sdm845"
+lookuptable[("sdm845", 0x20, 0x14)] = L1_TLB_KRYO3XX_SILVER()
+lookuptable[("sdm845", 0x21, 0x14)] = L1_TLB_KRYO3XX_SILVER()
+lookuptable[("sdm845", 0x22, 0x14)] = L1_TLB_KRYO3XX_SILVER()
+lookuptable[("sdm845", 0x23, 0x14)] = L1_TLB_KRYO3XX_SILVER()
+lookuptable[("sdm845", 0x24, 0x14)] = L1_TLB_KRYO3XX_GOLD()
+lookuptable[("sdm845", 0x25, 0x14)] = L1_TLB_KRYO3XX_GOLD()
+lookuptable[("sdm845", 0x26, 0x14)] = L1_TLB_KRYO3XX_GOLD()
+lookuptable[("sdm845", 0x27, 0x14)] = L1_TLB_KRYO3XX_GOLD()
+
 # "msm8998"
 lookuptable[("8998", 0x20, 0x14)] = L1_TLB_A53()
 lookuptable[("8998", 0x21, 0x14)] = L1_TLB_A53()