# error "Please do not build this file directly, build asm-offsets.c instead"
#endif
+#include <linux/efi.h>
+
#include <asm/ucontext.h>
- #define __SYSCALL_I386(nr, sym, qual) [nr] = 1,
- static char syscalls[] = {
- #include <asm/syscalls_32.h>
- };
-
/* workaround for a warning with -Wmissing-prototypes */
void foo(void);
BLANK();
OFFSET(stack_canary_offset, stack_canary, canary);
#endif
- BLANK();
- DEFINE(__NR_syscall_max, sizeof(syscalls) - 1);
- DEFINE(NR_syscalls, sizeof(syscalls));
-
+
+ BLANK();
+ DEFINE(EFI_svam, offsetof(efi_runtime_services_t, set_virtual_address_map));
}
#ifdef CONFIG_TRACE_IRQFLAGS
extern void trace_hardirqs_on(void);
extern void trace_hardirqs_off(void);
- # define trace_hardirq_context(p) ((p)->hardirq_context)
- # define trace_softirq_context(p) ((p)->softirq_context)
- # define trace_hardirqs_enabled(p) ((p)->hardirqs_enabled)
- # define trace_softirqs_enabled(p) ((p)->softirqs_enabled)
- # define trace_hardirq_enter() \
+ # define lockdep_hardirq_context(p) ((p)->hardirq_context)
+ # define lockdep_softirq_context(p) ((p)->softirq_context)
+ # define lockdep_hardirqs_enabled(p) ((p)->hardirqs_enabled)
+ # define lockdep_softirqs_enabled(p) ((p)->softirqs_enabled)
+ # define lockdep_hardirq_enter() \
do { \
- current->hardirq_context++; \
+ if (!current->hardirq_context++) \
+ current->hardirq_threaded = 0; \
+} while (0)
- # define trace_hardirq_threaded() \
++# define lockdep_hardirq_threaded() \
+do { \
+ current->hardirq_threaded = 1; \
} while (0)
- # define trace_hardirq_exit() \
+ # define lockdep_hardirq_exit() \
do { \
current->hardirq_context--; \
} while (0)
#else
# define trace_hardirqs_on() do { } while (0)
# define trace_hardirqs_off() do { } while (0)
- # define trace_hardirq_context(p) 0
- # define trace_softirq_context(p) 0
- # define trace_hardirqs_enabled(p) 0
- # define trace_softirqs_enabled(p) 0
- # define trace_hardirq_enter() do { } while (0)
- # define trace_hardirq_threaded() do { } while (0)
- # define trace_hardirq_exit() do { } while (0)
+ # define lockdep_hardirq_context(p) 0
+ # define lockdep_softirq_context(p) 0
+ # define lockdep_hardirqs_enabled(p) 0
+ # define lockdep_softirqs_enabled(p) 0
+ # define lockdep_hardirq_enter() do { } while (0)
++# define lockdep_hardirq_threaded() do { } while (0)
+ # define lockdep_hardirq_exit() do { } while (0)
# define lockdep_softirq_enter() do { } while (0)
# define lockdep_softirq_exit() do { } while (0)
+# define lockdep_hrtimer_enter(__hrtimer) do { } while (0)
+# define lockdep_hrtimer_exit(__hrtimer) do { } while (0)
+# define lockdep_posixtimer_enter() do { } while (0)
+# define lockdep_posixtimer_exit() do { } while (0)
+# define lockdep_irq_work_enter(__work) do { } while (0)
+# define lockdep_irq_work_exit(__work) do { } while (0)
#endif
#if defined(CONFIG_IRQSOFF_TRACER) || \
for_each_action_of_desc(desc, action) {
irqreturn_t res;
- trace_hardirq_threaded();
+ /*
+ * If this IRQ would be threaded under force_irqthreads, mark it so.
+ */
+ if (irq_settings_can_thread(desc) &&
+ !(action->flags & (IRQF_NO_THREAD | IRQF_PERCPU | IRQF_ONESHOT)))
++ lockdep_hardirq_threaded();
+
trace_irq_handler_entry(irq, action);
res = action->handler(irq, action->dev_id);
trace_irq_handler_exit(irq, action, res);