mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2026-02-17 13:40:32 -05:00
While the GCC and Clang compilers already define __ASSEMBLER__ automatically when compiling assembly code, __ASSEMBLY__ is a macro that only gets defined by the Makefiles in the kernel. This can be very confusing when switching between userspace and kernelspace coding, or when dealing with uapi headers that rather should use __ASSEMBLER__ instead. So let's standardize on the __ASSEMBLER__ macro that is provided by the compilers now. This is a completely mechanical patch (done with a simple "sed -i" statement). Cc: David S. Miller <davem@davemloft.net> Cc: Andreas Larsson <andreas@gaisler.com> Cc: sparclinux@vger.kernel.org Signed-off-by: Thomas Huth <thuth@redhat.com> Reviewed-by: Andreas Larsson <andreas@gaisler.com> Signed-off-by: Andreas Larsson <andreas@gaisler.com>
76 lines
2.0 KiB
C
76 lines
2.0 KiB
C
/* SPDX-License-Identifier: GPL-2.0 */
|
|
/*
|
|
* kdebug.h: Defines and definitions for debugging the Linux kernel
|
|
* under various kernel debuggers.
|
|
*
|
|
* Copyright (C) 1995 David S. Miller (davem@caip.rutgers.edu)
|
|
*/
|
|
#ifndef _SPARC_KDEBUG_H
|
|
#define _SPARC_KDEBUG_H
|
|
|
|
#include <asm/openprom.h>
|
|
#include <asm/vaddrs.h>
|
|
|
|
/* Breakpoints are enter through trap table entry 126. So in sparc assembly
|
|
* if you want to drop into the debugger you do:
|
|
*
|
|
* t DEBUG_BP_TRAP
|
|
*/
|
|
|
|
#define DEBUG_BP_TRAP 126
|
|
|
|
#ifndef __ASSEMBLER__
|
|
/* The debug vector is passed in %o1 at boot time. It is a pointer to
|
|
* a structure in the debuggers address space. Here is its format.
|
|
*/
|
|
|
|
typedef unsigned int (*debugger_funct)(void);
|
|
|
|
struct kernel_debug {
|
|
/* First the entry point into the debugger. You jump here
|
|
* to give control over to the debugger.
|
|
*/
|
|
unsigned long kdebug_entry;
|
|
unsigned long kdebug_trapme; /* Figure out later... */
|
|
/* The following is the number of pages that the debugger has
|
|
* taken from to total pool.
|
|
*/
|
|
unsigned long *kdebug_stolen_pages;
|
|
/* Ok, after you remap yourself and/or change the trap table
|
|
* from what you were left with at boot time you have to call
|
|
* this synchronization function so the debugger can check out
|
|
* what you have done.
|
|
*/
|
|
debugger_funct teach_debugger;
|
|
}; /* I think that is it... */
|
|
|
|
extern struct kernel_debug *linux_dbvec;
|
|
|
|
/* Use this macro in C-code to enter the debugger. */
|
|
static inline void sp_enter_debugger(void)
|
|
{
|
|
__asm__ __volatile__("jmpl %0, %%o7\n\t"
|
|
"nop\n\t" : :
|
|
"r" (linux_dbvec) : "o7", "memory");
|
|
}
|
|
|
|
#define SP_ENTER_DEBUGGER do { \
|
|
if((linux_dbvec!=0) && ((*(short *)linux_dbvec)!=-1)) \
|
|
sp_enter_debugger(); \
|
|
} while(0)
|
|
|
|
enum die_val {
|
|
DIE_UNUSED,
|
|
DIE_OOPS,
|
|
};
|
|
|
|
#endif /* !(__ASSEMBLER__) */
|
|
|
|
/* Some nice offset defines for assembler code. */
|
|
#define KDEBUG_ENTRY_OFF 0x0
|
|
#define KDEBUG_DUNNO_OFF 0x4
|
|
#define KDEBUG_DUNNO2_OFF 0x8
|
|
#define KDEBUG_TEACH_OFF 0xc
|
|
|
|
#endif /* !(_SPARC_KDEBUG_H) */
|