Commit d498d4b4 authored by Vijaya Kumar K's avatar Vijaya Kumar K Committed by Catalin Marinas

KGDB: make kgdb_breakpoint() as noinline

The function kgdb_breakpoint() sets up break point at
compile time by calling arch_kgdb_breakpoint();
Though this call is surrounded by wmb() barrier,
the compile can still re-order the break point,
because this scheduling barrier is not a code motion
barrier in gcc.

Making kgdb_breakpoint() as noinline solves this problem
of code reording around break point instruction and also
avoids problem of being called as inline function from
other places

More details about discussion on this can be found here
http://comments.gmane.org/gmane.linux.ports.arm.kernel/269732Signed-off-by: default avatarVijaya Kumar K <Vijaya.Kumar@caviumnetworks.com>
Acked-by: default avatarWill Deacon <will.deacon@arm.com>
Acked-by: default avatarJason Wessel <jason.wessel@windriver.com>
Signed-off-by: default avatarCatalin Marinas <catalin.marinas@arm.com>
parent 44679a4f
...@@ -1035,7 +1035,7 @@ int dbg_io_get_char(void) ...@@ -1035,7 +1035,7 @@ int dbg_io_get_char(void)
* otherwise as a quick means to stop program execution and "break" into * otherwise as a quick means to stop program execution and "break" into
* the debugger. * the debugger.
*/ */
void kgdb_breakpoint(void) noinline void kgdb_breakpoint(void)
{ {
atomic_inc(&kgdb_setting_breakpoint); atomic_inc(&kgdb_setting_breakpoint);
wmb(); /* Sync point before breakpoint */ wmb(); /* Sync point before breakpoint */
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment