mirror of
https://github.com/torvalds/linux
synced 2024-11-05 18:23:50 +00:00
be7635e728
KASAN needs to know whether the allocation happens in an IRQ handler. This lets us strip everything below the IRQ entry point to reduce the number of unique stack traces needed to be stored. Move the definition of __irq_entry to <linux/interrupt.h> so that the users don't need to pull in <linux/ftrace.h>. Also introduce the __softirq_entry macro which is similar to __irq_entry, but puts the corresponding functions to the .softirqentry.text section. Signed-off-by: Alexander Potapenko <glider@google.com> Acked-by: Steven Rostedt <rostedt@goodmis.org> Cc: Christoph Lameter <cl@linux.com> Cc: Pekka Enberg <penberg@kernel.org> Cc: David Rientjes <rientjes@google.com> Cc: Joonsoo Kim <iamjoonsoo.kim@lge.com> Cc: Andrey Konovalov <adech.fo@gmail.com> Cc: Dmitry Vyukov <dvyukov@google.com> Cc: Andrey Ryabinin <ryabinin.a.a@gmail.com> Cc: Konstantin Serebryany <kcc@google.com> Cc: Dmitry Chernenkov <dmitryc@google.com> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
116 lines
2.5 KiB
ArmAsm
116 lines
2.5 KiB
ArmAsm
/*
|
|
* OpenRISC vmlinux.lds.S
|
|
*
|
|
* Linux architectural port borrowing liberally from similar works of
|
|
* others. All original copyrights apply as per the original source
|
|
* declaration.
|
|
*
|
|
* Modifications for the OpenRISC architecture:
|
|
* Copyright (C) 2003 Matjaz Breskvar <phoenix@bsemi.com>
|
|
* Copyright (C) 2010-2011 Jonas Bonn <jonas@southpole.se>
|
|
*
|
|
* This program is free software; you can redistribute it and/or
|
|
* modify it under the terms of the GNU General Public License
|
|
* as published by the Free Software Foundation; either version
|
|
* 2 of the License, or (at your option) any later version.
|
|
*
|
|
* ld script for OpenRISC architecture
|
|
*/
|
|
|
|
/* TODO
|
|
* - clean up __offset & stuff
|
|
* - change all 8192 aligment to PAGE !!!
|
|
* - recheck if all aligments are really needed
|
|
*/
|
|
|
|
# define LOAD_OFFSET PAGE_OFFSET
|
|
# define LOAD_BASE PAGE_OFFSET
|
|
|
|
#include <asm/page.h>
|
|
#include <asm/cache.h>
|
|
#include <asm-generic/vmlinux.lds.h>
|
|
|
|
OUTPUT_FORMAT("elf32-or32", "elf32-or32", "elf32-or32")
|
|
jiffies = jiffies_64 + 4;
|
|
|
|
SECTIONS
|
|
{
|
|
/* Read-only sections, merged into text segment: */
|
|
. = LOAD_BASE ;
|
|
|
|
/* _s_kernel_ro must be page aligned */
|
|
. = ALIGN(PAGE_SIZE);
|
|
_s_kernel_ro = .;
|
|
|
|
.text : AT(ADDR(.text) - LOAD_OFFSET)
|
|
{
|
|
_stext = .;
|
|
TEXT_TEXT
|
|
SCHED_TEXT
|
|
LOCK_TEXT
|
|
KPROBES_TEXT
|
|
IRQENTRY_TEXT
|
|
SOFTIRQENTRY_TEXT
|
|
*(.fixup)
|
|
*(.text.__*)
|
|
_etext = .;
|
|
}
|
|
/* TODO: Check if fixup and text.__* are really necessary
|
|
* fixup is definitely necessary
|
|
*/
|
|
|
|
_sdata = .;
|
|
|
|
/* Page alignment required for RO_DATA_SECTION */
|
|
RO_DATA_SECTION(PAGE_SIZE)
|
|
_e_kernel_ro = .;
|
|
|
|
/* Whatever comes after _e_kernel_ro had better be page-aligend, too */
|
|
|
|
/* 32 here is cacheline size... recheck this */
|
|
RW_DATA_SECTION(32, PAGE_SIZE, PAGE_SIZE)
|
|
|
|
_edata = .;
|
|
|
|
EXCEPTION_TABLE(4)
|
|
NOTES
|
|
|
|
/* Init code and data */
|
|
. = ALIGN(PAGE_SIZE);
|
|
__init_begin = .;
|
|
|
|
HEAD_TEXT_SECTION
|
|
|
|
/* Page aligned */
|
|
INIT_TEXT_SECTION(PAGE_SIZE)
|
|
|
|
/* Align __setup_start on 16 byte boundary */
|
|
INIT_DATA_SECTION(16)
|
|
|
|
PERCPU_SECTION(L1_CACHE_BYTES)
|
|
|
|
__init_end = .;
|
|
|
|
. = ALIGN(PAGE_SIZE);
|
|
.initrd : AT(ADDR(.initrd) - LOAD_OFFSET)
|
|
{
|
|
__initrd_start = .;
|
|
*(.initrd)
|
|
__initrd_end = .;
|
|
FILL (0);
|
|
. = ALIGN (PAGE_SIZE);
|
|
}
|
|
|
|
__vmlinux_end = .; /* last address of the physical file */
|
|
|
|
BSS_SECTION(0, 0, 0x20)
|
|
|
|
_end = .;
|
|
|
|
/* Throw in the debugging sections */
|
|
STABS_DEBUG
|
|
DWARF_DEBUG
|
|
|
|
/* Sections to be discarded -- must be last */
|
|
DISCARDS
|
|
}
|