From dee178d196d7ccd44fac8f828db3d31a1ebaacf4 Mon Sep 17 00:00:00 2001
From: Laura Abbott <lauraa@codeaurora.org>
Date: Tue, 10 Jun 2014 17:20:47 -0700
Subject: [PATCH] linux-ramdump-parser-v2: Pass the framepointer to watchdog
 unwinding

The frame pointer is needed for unwinding when not using lookup tables.
Make sure the frame pointer is passed in for the watchdog_v2 which
is used by arm64 which does not have unwinding tables.

Change-Id: If281a6fb398d1be30451374279605cfa5033306e
---
 linux-ramdump-parser-v2/watchdog_v2.py | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/linux-ramdump-parser-v2/watchdog_v2.py b/linux-ramdump-parser-v2/watchdog_v2.py
index 108eb32..c20a35c 100644
--- a/linux-ramdump-parser-v2/watchdog_v2.py
+++ b/linux-ramdump-parser-v2/watchdog_v2.py
@@ -275,9 +275,11 @@ class TZRegDump_v2():
         if ram_dump.arm64:
             lr = self.core_regs.regs['x30']
             bt = self.core_regs.regs['sp_el1']
+            fp = self.core_regs.regs['x29']
         else:
             lr = self.core_regs.regs['r14_svc']
             bt = self.core_regs.regs['r13_svc']
+            fp = self.core_regs.regs['r11']
 
         a = ram_dump.unwind_lookup(pc)
         if a is not None:
@@ -296,7 +298,7 @@ class TZRegDump_v2():
         print_out_str(
             'Core {3} LR: {0}+{1:x} <{2:x}>'.format(symname, offset, lr, self.core))
         print_out_str('')
-        ram_dump.unwind.unwind_backtrace(bt, 0, pc, lr, '')
+        ram_dump.unwind.unwind_backtrace(bt, fp, pc, lr, '')
         print_out_str('')
 
     def init_regs(self, start_addr, end_addr, core, ram_dump):
-- 
GitLab