Imported Upstream version 1.3.1
[platform/upstream/libunwind.git] / src / sh / Gregs.c
index cd86a2d..7d8e8e9 100644 (file)
@@ -27,12 +27,15 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.  */
 
 HIDDEN int
 tdep_access_reg (struct cursor *c, unw_regnum_t reg, unw_word_t *valp,
-                int write)
+                 int write)
 {
   dwarf_loc_t loc = DWARF_NULL_LOC;
 
   switch (reg)
     {
+    case UNW_SH_PC:
+      if (write)
+        c->dwarf.ip = *valp;            /* update the IP cache */
     case UNW_SH_R0:
     case UNW_SH_R1:
     case UNW_SH_R2:
@@ -48,7 +51,6 @@ tdep_access_reg (struct cursor *c, unw_regnum_t reg, unw_word_t *valp,
     case UNW_SH_R12:
     case UNW_SH_R13:
     case UNW_SH_R14:
-    case UNW_SH_PC:
     case UNW_SH_PR:
       loc = c->dwarf.loc[reg];
       break;
@@ -72,7 +74,7 @@ tdep_access_reg (struct cursor *c, unw_regnum_t reg, unw_word_t *valp,
 
 HIDDEN int
 tdep_access_fpreg (struct cursor *c, unw_regnum_t reg, unw_fpreg_t *valp,
-                  int write)
+                   int write)
 {
   Debug (1, "bad register number %u\n", reg);
   return -UNW_EBADREG;