rk: revert to v3.10
[firefly-linux-kernel-4.4.55.git] / arch / arm64 / include / asm / debug-monitors.h
index aab72ce22348a9a7b09372576d7f917c03c0a5e2..7eaa0b302493491b781b0a8c432b66bdac57fd43 100644 (file)
 
 #ifdef __KERNEL__
 
-/* Low-level stepping controls. */
-#define DBG_MDSCR_SS           (1 << 0)
-#define DBG_SPSR_SS            (1 << 21)
-
-/* MDSCR_EL1 enabling bits */
-#define DBG_MDSCR_KDE          (1 << 13)
-#define DBG_MDSCR_MDE          (1 << 15)
-#define DBG_MDSCR_MASK         ~(DBG_MDSCR_KDE | DBG_MDSCR_MDE)
-
 #define        DBG_ESR_EVT(x)          (((x) >> 27) & 0x7)
 
 /* AArch64 */
 #define DBG_ESR_EVT_HWWP       0x2
 #define DBG_ESR_EVT_BRK                0x6
 
-/*
- * Break point instruction encoding
- */
-#define BREAK_INSTR_SIZE               4
-
-/*
- * ESR values expected for dynamic and compile time BRK instruction
- */
-#define DBG_ESR_VAL_BRK(x)     (0xf2000000 | ((x) & 0xfffff))
-
-/*
- * #imm16 values used for BRK instruction generation
- * Allowed values for kgbd are 0x400 - 0x7ff
- * 0x400: for dynamic BRK instruction
- * 0x401: for compile time BRK instruction
- */
-#define KGDB_DYN_DGB_BRK_IMM           0x400
-#define KDBG_COMPILED_DBG_BRK_IMM      0x401
-
-/*
- * BRK instruction encoding
- * The #imm16 value should be placed at bits[20:5] within BRK ins
- */
-#define AARCH64_BREAK_MON      0xd4200000
-
-/*
- * Extract byte from BRK instruction
- */
-#define KGDB_DYN_DGB_BRK_INS_BYTE(x) \
-       ((((AARCH64_BREAK_MON) & 0xffe0001f) >> (x * 8)) & 0xff)
-
-/*
- * Extract byte from BRK #imm16
- */
-#define KGBD_DYN_DGB_BRK_IMM_BYTE(x) \
-       (((((KGDB_DYN_DGB_BRK_IMM) & 0xffff) << 5) >> (x * 8)) & 0xff)
-
-#define KGDB_DYN_DGB_BRK_BYTE(x) \
-       (KGDB_DYN_DGB_BRK_INS_BYTE(x) | KGBD_DYN_DGB_BRK_IMM_BYTE(x))
-
-#define  KGDB_DYN_BRK_INS_BYTE0  KGDB_DYN_DGB_BRK_BYTE(0)
-#define  KGDB_DYN_BRK_INS_BYTE1  KGDB_DYN_DGB_BRK_BYTE(1)
-#define  KGDB_DYN_BRK_INS_BYTE2  KGDB_DYN_DGB_BRK_BYTE(2)
-#define  KGDB_DYN_BRK_INS_BYTE3  KGDB_DYN_DGB_BRK_BYTE(3)
-
-#define CACHE_FLUSH_IS_SAFE            1
+enum debug_el {
+       DBG_ACTIVE_EL0 = 0,
+       DBG_ACTIVE_EL1,
+};
 
 /* AArch32 */
 #define DBG_ESR_EVT_BKPT       0x4
 #ifndef __ASSEMBLY__
 struct task_struct;
 
-#define DBG_ARCH_ID_RESERVED   0       /* In case of ptrace ABI updates. */
-
-#define DBG_HOOK_HANDLED       0
-#define DBG_HOOK_ERROR         1
-
-struct step_hook {
-       struct list_head node;
-       int (*fn)(struct pt_regs *regs, unsigned int esr);
-};
-
-void register_step_hook(struct step_hook *hook);
-void unregister_step_hook(struct step_hook *hook);
-
-struct break_hook {
-       struct list_head node;
-       u32 esr_val;
-       u32 esr_mask;
-       int (*fn)(struct pt_regs *regs, unsigned int esr);
-};
+#define local_dbg_save(flags)                                                  \
+       do {                                                                    \
+               typecheck(unsigned long, flags);                                \
+               asm volatile(                                                   \
+               "mrs    %0, daif                        // local_dbg_save\n"    \
+               "msr    daifset, #8"                                            \
+               : "=r" (flags) : : "memory");                                   \
+       } while (0)
+
+#define local_dbg_restore(flags)                                               \
+       do {                                                                    \
+               typecheck(unsigned long, flags);                                \
+               asm volatile(                                                   \
+               "msr    daif, %0                        // local_dbg_restore\n" \
+               : : "r" (flags) : "memory");                                    \
+       } while (0)
 
-void register_break_hook(struct break_hook *hook);
-void unregister_break_hook(struct break_hook *hook);
+#define DBG_ARCH_ID_RESERVED   0       /* In case of ptrace ABI updates. */
 
 u8 debug_monitors_arch(void);
 
-enum debug_el {
-       DBG_ACTIVE_EL0 = 0,
-       DBG_ACTIVE_EL1,
-};
-
 void enable_debug_monitors(enum debug_el el);
 void disable_debug_monitors(enum debug_el el);
 
@@ -143,15 +83,6 @@ static inline int reinstall_suspended_bps(struct pt_regs *regs)
 }
 #endif
 
-#ifdef CONFIG_COMPAT
-int aarch32_break_handler(struct pt_regs *regs);
-#else
-static int aarch32_break_handler(struct pt_regs *regs)
-{
-       return -EFAULT;
-}
-#endif
-
 #endif /* __ASSEMBLY */
 #endif /* __KERNEL__ */
 #endif /* __ASM_DEBUG_MONITORS_H */