+2016-11-03  Yao Qi  <yao.qi@linaro.org>
+
+       * arm-tdep.c (arm_override_mode): Remove.
+       (arm_pc_is_thumb): Update.
+       (arm_insert_single_step_breakpoint): Update.
+
 2016-11-03  Yao Qi  <yao.qi@linaro.org>
 
        * arch-utils.c (default_breakpoint_kind_from_current_state):
 
 static const char *arm_fallback_mode_string = "auto";
 static const char *arm_force_mode_string = "auto";
 
-/* Internal override of the execution mode.  -1 means no override,
-   0 means override to ARM mode, 1 means override to Thumb mode.
-   The effect is the same as if arm_force_mode has been set by the
-   user (except the internal override has precedence over a user's
-   arm_force_mode override).  */
-static int arm_override_mode = -1;
-
 /* Number of different reg name sets (options).  */
 static int num_disassembly_options;
 
   if (IS_THUMB_ADDR (memaddr))
     return 1;
 
-  /* Respect internal mode override if active.  */
-  if (arm_override_mode != -1)
-    return arm_override_mode;
-
   /* If the user wants to override the symbol table, let him.  */
   if (strcmp (arm_force_mode_string, "arm") == 0)
     return 0;
                                   struct address_space *aspace,
                                   CORE_ADDR pc)
 {
-  scoped_restore save_override_mode
-    = make_scoped_restore (&arm_override_mode,
-                          (int) IS_THUMB_ADDR (pc));
   pc = gdbarch_addr_bits_remove (gdbarch, pc);
 
   insert_single_step_breakpoint (gdbarch, aspace, pc);