diff --git a/linux-ramdump-parser-v2/parsers/irqstate.py b/linux-ramdump-parser-v2/parsers/irqstate.py
index c0357d3730c8cf38ff6e15ce7673ede7de125626..3e1d696803ec631312bd4621ad61b93a7dc8b4eb 100644
--- a/linux-ramdump-parser-v2/parsers/irqstate.py
+++ b/linux-ramdump-parser-v2/parsers/irqstate.py
@@ -77,6 +77,7 @@ class IrqParse(RamParser):
         rnode_height_offset = ram_dump.field_offset(
             'struct radix_tree_node', 'height')
         slots_offset = ram_dump.field_offset('struct radix_tree_node', 'slots')
+        pointer_size = ram_dump.sizeof('struct radix_tree_node *')
 
         # if CONFIG_BASE_SMALL=0: radix_tree_map_shift = 6
         radix_tree_map_shift = 6
@@ -87,10 +88,10 @@ class IrqParse(RamParser):
         if ram_dump.read_word(root_addr + rnode_offset) & 1 == 0:
             if index > 0:
                 return None
-            return (ram_dump.read_word(root_addr + rnode_offset) & 0xfffffffe)
+            return (ram_dump.read_word(root_addr + rnode_offset) & 0xfffffffffffffffe)
 
-        node_addr = ram_dump.read_word(root_addr + rnode_offset) & 0xfffffffe
-        height = ram_dump.read_word(node_addr + rnode_height_offset)
+        node_addr = ram_dump.read_word(root_addr + rnode_offset) & 0xfffffffffffffffe
+        height = ram_dump.read_int(node_addr + rnode_height_offset)
 
         if height > len(height_to_maxindex):
             return None
@@ -101,11 +102,11 @@ class IrqParse(RamParser):
         shift = (height - 1) * radix_tree_map_shift
         for h in range(height, 0, -1):
             node_addr = ram_dump.read_word(
-                node_addr + slots_offset + ((index >> shift) & radix_tree_map_mask) * 4)
+                node_addr + slots_offset + ((index >> shift) & radix_tree_map_mask) * pointer_size)
             if node_addr == 0:
                 return None
             shift -= radix_tree_map_shift
-        return (node_addr & 0xfffffffe)
+        return (node_addr & 0xfffffffffffffffe)
 
     def print_irq_state_sparse_irq(self, ram_dump):
         h_irq_offset = ram_dump.field_offset('struct irq_desc', 'handle_irq')
@@ -122,7 +123,7 @@ class IrqParse(RamParser):
         cpu_str = ''
 
         irq_desc_tree = ram_dump.addr_lookup('irq_desc_tree')
-        nr_irqs = ram_dump.read_word(ram_dump.addr_lookup('nr_irqs'))
+        nr_irqs = ram_dump.read_int(ram_dump.addr_lookup('nr_irqs'))
 
         for i in ram_dump.iter_cpus():
             cpu_str = cpu_str + '{0:10} '.format('CPU{0}'.format(i))