mirror of
https://github.com/Telecominfraproject/OpenCellular.git
synced 2026-01-02 05:05:09 +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>
26 lines
963 B
C
26 lines
963 B
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(CPU_INT(irq))(void) \
|
|
__attribute__ ((alias(STRINGIFY(routine)))); \
|
|
const struct irq_priority __keep IRQ_PRIORITY(CPU_INT(irq)) \
|
|
__attribute__((section(".rodata.irqprio"))) \
|
|
= {CPU_INT(irq), priority}
|
|
|
|
#endif /* __CROS_EC_IRQ_HANDLER_H */
|