These will be used by subsequent patches.

Signed-off-by: Nicholas Piggin <npig...@gmail.com>
---
 arch/powerpc/include/asm/interrupt.h | 52 ++++++++++++++++++++++++++++
 1 file changed, 52 insertions(+)

diff --git a/arch/powerpc/include/asm/interrupt.h 
b/arch/powerpc/include/asm/interrupt.h
index 3292f5094085..c5ffcf144bbd 100644
--- a/arch/powerpc/include/asm/interrupt.h
+++ b/arch/powerpc/include/asm/interrupt.h
@@ -5,6 +5,36 @@
 #include <linux/context_tracking.h>
 #include <asm/ftrace.h>
 
+struct interrupt_state {
+};
+
+static inline void interrupt_enter_prepare(struct pt_regs *regs, struct 
interrupt_state *state)
+{
+}
+
+static inline void interrupt_exit_prepare(struct pt_regs *regs, struct 
interrupt_state *state)
+{
+}
+
+static inline void interrupt_async_enter_prepare(struct pt_regs *regs, struct 
interrupt_state *state)
+{
+}
+
+static inline void interrupt_async_exit_prepare(struct pt_regs *regs, struct 
interrupt_state *state)
+{
+}
+
+struct interrupt_nmi_state {
+};
+
+static inline void interrupt_nmi_enter_prepare(struct pt_regs *regs, struct 
interrupt_nmi_state *state)
+{
+}
+
+static inline void interrupt_nmi_exit_prepare(struct pt_regs *regs, struct 
interrupt_nmi_state *state)
+{
+}
+
 /**
  * DECLARE_INTERRUPT_HANDLER_RAW - Declare raw interrupt handler function
  * @func:      Function name of the entry point
@@ -59,7 +89,13 @@ static __always_inline void ___##func(struct pt_regs *regs); 
        \
                                                                        \
 __visible noinstr void func(struct pt_regs *regs)                      \
 {                                                                      \
+       struct interrupt_state state;                                   \
+                                                                       \
+       interrupt_enter_prepare(regs, &state);                          \
+                                                                       \
        ___##func (regs);                                               \
+                                                                       \
+       interrupt_exit_prepare(regs, &state);                           \
 }                                                                      \
                                                                        \
 static __always_inline void ___##func(struct pt_regs *regs)
@@ -87,10 +123,15 @@ static __always_inline long ___##func(struct pt_regs 
*regs);               \
                                                                        \
 __visible noinstr long func(struct pt_regs *regs)                      \
 {                                                                      \
+       struct interrupt_state state;                                   \
        long ret;                                                       \
                                                                        \
+       interrupt_enter_prepare(regs, &state);                          \
+                                                                       \
        ret = ___##func (regs);                                         \
                                                                        \
+       interrupt_exit_prepare(regs, &state);                           \
+                                                                       \
        return ret;                                                     \
 }                                                                      \
                                                                        \
@@ -117,7 +158,13 @@ static __always_inline void ___##func(struct pt_regs 
*regs);               \
                                                                        \
 __visible noinstr void func(struct pt_regs *regs)                      \
 {                                                                      \
+       struct interrupt_state state;                                   \
+                                                                       \
+       interrupt_async_enter_prepare(regs, &state);                    \
+                                                                       \
        ___##func (regs);                                               \
+                                                                       \
+       interrupt_async_exit_prepare(regs, &state);                     \
 }                                                                      \
                                                                        \
 static __always_inline void ___##func(struct pt_regs *regs)
@@ -145,10 +192,15 @@ static __always_inline long ___##func(struct pt_regs 
*regs);              \
                                                                        \
 __visible noinstr long func(struct pt_regs *regs)                      \
 {                                                                      \
+       struct interrupt_nmi_state state;                               \
        long ret;                                                       \
                                                                        \
+       interrupt_nmi_enter_prepare(regs, &state);                      \
+                                                                       \
        ret = ___##func (regs);                                         \
                                                                        \
+       interrupt_nmi_exit_prepare(regs, &state);                       \
+                                                                       \
        return ret;                                                     \
 }                                                                      \
                                                                        \
-- 
2.23.0

Reply via email to