mirror of
https://github.com/Telecominfraproject/OpenCellular.git
synced 2025-12-30 02:20:48 +00:00
Add __keep attribute to irqprio entries to ensure they are not dropped when CONFIG_LTO is enabled. BUG=chrome-os-partner:55920 BRANCH=None TEST=Manual on kevin. Check build/RO/ec.RO.map, verify that .rodata.irqprio section is not empty. Change-Id: I51ae23556d6f46b2cd7ba098f0e7a785292b2853 Signed-off-by: Shawn Nematbakhsh <shawnn@chromium.org> Reviewed-on: https://chromium-review.googlesource.com/366571 Commit-Ready: Shawn N <shawnn@chromium.org> Tested-by: Shawn N <shawnn@chromium.org> Reviewed-by: Aseda Aboagye <aaboagye@chromium.org>
30 lines
1.0 KiB
C
30 lines
1.0 KiB
C
/* Copyright (c) 2014 The Chromium OS Authors. All rights reserved.
|
|
* Use of this source code is governed by a BSD-style license that can be
|
|
* found in the LICENSE file.
|
|
*/
|
|
|
|
/* Helper to declare IRQ handling routines */
|
|
|
|
#ifndef __CROS_EC_IRQ_HANDLER_H
|
|
#define __CROS_EC_IRQ_HANDLER_H
|
|
|
|
/* Helper macros to build the IRQ handler and priority struct names */
|
|
#define IRQ_HANDLER(irqname) CONCAT3(irq_, irqname, _handler)
|
|
#define IRQ_PRIORITY(irqname) CONCAT2(prio_, irqname)
|
|
/*
|
|
* Macro to connect the interrupt handler "routine" to the irq number "irq" and
|
|
* ensure it is enabled in the interrupt controller with the right priority.
|
|
*/
|
|
#define DECLARE_IRQ(irq, routine, priority) \
|
|
void IRQ_HANDLER(irq)(void) \
|
|
{ \
|
|
void *ret = __builtin_return_address(0); \
|
|
task_start_irq_handler(ret); \
|
|
routine(); \
|
|
task_resched_if_needed(ret); \
|
|
} \
|
|
const struct irq_priority __keep IRQ_PRIORITY(irq) \
|
|
__attribute__((section(".rodata.irqprio"))) \
|
|
= {irq, priority}
|
|
#endif /* __CROS_EC_IRQ_HANDLER_H */
|