LKML Archive on lore.kernel.org
 help / color / Atom feed
From: Andi Kleen <andi@firstfloor.org>
To: x86@kernel.org
Cc: linux-kernel@vger.kernel.org
Subject: x86: Clean up asmlinkage use
Date: Mon,  5 Aug 2013 15:02:34 -0700
Message-ID: <1375740170-7446-1-git-send-email-andi@firstfloor.org> (raw)

This patchkit makes the use of asmlinkage consistent in arch/x86
Originally arch/x86 was (mostly) fully annotated with asmlinkage, but 
this has bitrotted over time.

These changes were originally part of my LTO patchkit. In the interest
of making it smaller, I'm posting them separately, as they can be
considered cleanups.

By itself they do not improve anything in the existing kernel,
except for making things more consistent.

They may be useful for other global compile time instrumentation tools
to indicate clearly that some function/variable can be changed
outside their view.

---

The goal is to mark every function or variable that can be called
from assembler. asmlinkage on 32bit includes regparm(0) so changes
semantics. Since I didn't want to audit every caller and make
this patchkit a nop by itself, I did not add new asmlinkage
to 32bit functions that take parameters. So no existing function
switches from regparm(3) to (0).

Instead every function with parameter (and variables) becomes
__visible. This is roughly equivalent now to the old "asmregparm"
(which was removed some time ago), except it also works for 
variables.

So in summary the changes are:
- Mark every function without arguments (or 64bit only) 
that is used by assembler asmlinkage
- Mark every function with parameters or variables 
that is used by assembler __visible.

I also included a few related fixes with inline assembler
and a type fix for the syscall table.


             reply index

Thread overview: 37+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-08-05 22:02 Andi Kleen [this message]
2013-08-05 22:02 ` [PATCH 01/16] x86: Fix sys_call_table type in asm/syscall.h v2 Andi Kleen
2013-08-06 21:42   ` [tip:x86/asmlinkage] x86: Fix sys_call_table type in asm/ syscall.h tip-bot for Andi Kleen
2013-08-05 22:02 ` [PATCH 02/16] x86, asmlinkage: Change dotraplinkage into __visible on 32bit v2 Andi Kleen
2013-08-06 21:42   ` [tip:x86/asmlinkage] x86, asmlinkage: Change dotraplinkage into __visible on 32bit tip-bot for Andi Kleen
2013-08-05 22:02 ` [PATCH 03/16] x86, asmlinkage: Make all interrupt handlers asmlinkage / __visible Andi Kleen
2013-08-06 21:07   ` H. Peter Anvin
2013-08-06 21:24     ` H. Peter Anvin
2013-08-06 21:43   ` [tip:x86/asmlinkage] " tip-bot for Andi Kleen
2013-08-05 22:02 ` [PATCH 04/16] x86, asmlinkage: Make _*_start_kernel visible Andi Kleen
2013-08-06 21:43   ` [tip:x86/asmlinkage] " tip-bot for Andi Kleen
2013-08-05 22:02 ` [PATCH 05/16] x86, asmlinkage: Make 32bit/64bit __switch_to visible Andi Kleen
2013-08-06 21:43   ` [tip:x86/asmlinkage] x86, asmlinkage: Make 32bit/ 64bit " tip-bot for Andi Kleen
2013-08-05 22:02 ` [PATCH 06/16] x86, asmlinkage: Make various syscalls asmlinkage Andi Kleen
2013-08-06 21:43   ` [tip:x86/asmlinkage] " tip-bot for Andi Kleen
2013-08-05 22:02 ` [PATCH 07/16] x86, asmlinkage: Make kprobes code visible and fix assembler code Andi Kleen
2013-08-06 21:43   ` [tip:x86/asmlinkage] " tip-bot for Andi Kleen
2013-08-07  3:55     ` Masami Hiramatsu
2013-08-05 22:02 ` [PATCH 08/16] x86, asmlinkage, kexec: Drop bogus asmlinkage in machine_kexec_32 Andi Kleen
2013-08-05 23:03   ` H. Peter Anvin
2013-08-05 23:10     ` Andi Kleen
2013-08-05 22:02 ` [PATCH 09/16] x86, asmlinkage: Make several variables used from assembler/linker script visible Andi Kleen
2013-08-06 21:43   ` [tip:x86/asmlinkage] " tip-bot for Andi Kleen
2013-08-05 22:02 ` [PATCH 10/16] x86, asmlinkage: Make syscall tables visible Andi Kleen
2013-08-06 21:44   ` [tip:x86/asmlinkage] " tip-bot for Andi Kleen
2013-08-05 22:02 ` [PATCH 11/16] x86, asmlinkage, apm: Make APM data structure used from assembler visible Andi Kleen
2013-08-06 21:44   ` [tip:x86/asmlinkage] " tip-bot for Andi Kleen
2013-08-05 22:02 ` [PATCH 12/16] x86, asmlinkage, paravirt: Add __visible/asmlinkage to xen paravirt ops Andi Kleen
2013-08-06 21:44   ` [tip:x86/asmlinkage] x86, asmlinkage, paravirt: Add __visible/ asmlinkage " tip-bot for Andi Kleen
2013-08-05 22:02 ` [PATCH 13/16] x86, asmlinkage: Make 64bit checksum functions visible Andi Kleen
2013-08-06 21:44   ` [tip:x86/asmlinkage] " tip-bot for Andi Kleen
2013-08-05 22:02 ` [PATCH 14/16] x86, asmlinkage: Make dump_stack visible Andi Kleen
2013-08-06 21:44   ` [tip:x86/asmlinkage] " tip-bot for Andi Kleen
2013-08-05 22:02 ` [PATCH 15/16] x86, asmlinkage, power: Make various symbols used by the suspend asm code visible Andi Kleen
2013-08-06 21:44   ` [tip:x86/asmlinkage] " tip-bot for Andi Kleen
2013-08-05 22:02 ` [PATCH 16/16] x86, asmlinkage, vdso: Mark vdso variables __visible Andi Kleen
2013-08-06 21:45   ` [tip:x86/asmlinkage] " tip-bot for Andi Kleen

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1375740170-7446-1-git-send-email-andi@firstfloor.org \
    --to=andi@firstfloor.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=x86@kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link

LKML Archive on lore.kernel.org

Archives are clonable:
	git clone --mirror https://lore.kernel.org/lkml/0 lkml/git/0.git
	git clone --mirror https://lore.kernel.org/lkml/1 lkml/git/1.git
	git clone --mirror https://lore.kernel.org/lkml/2 lkml/git/2.git
	git clone --mirror https://lore.kernel.org/lkml/3 lkml/git/3.git
	git clone --mirror https://lore.kernel.org/lkml/4 lkml/git/4.git
	git clone --mirror https://lore.kernel.org/lkml/5 lkml/git/5.git
	git clone --mirror https://lore.kernel.org/lkml/6 lkml/git/6.git
	git clone --mirror https://lore.kernel.org/lkml/7 lkml/git/7.git
	git clone --mirror https://lore.kernel.org/lkml/8 lkml/git/8.git
	git clone --mirror https://lore.kernel.org/lkml/9 lkml/git/9.git

	# If you have public-inbox 1.1+ installed, you may
	# initialize and index your mirror using the following commands:
	public-inbox-init -V2 lkml lkml/ https://lore.kernel.org/lkml \
		linux-kernel@vger.kernel.org
	public-inbox-index lkml

Example config snippet for mirrors

Newsgroup available over NNTP:
	nntp://nntp.lore.kernel.org/org.kernel.vger.linux-kernel


AGPL code for this site: git clone https://public-inbox.org/public-inbox.git