mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2026-02-17 17:10:26 -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 originally was a completely mechanical patch (done with a simple "sed -i" statement), with some manual fixups during rebasing of the patch later. Cc: Paul Walmsley <paul.walmsley@sifive.com> Cc: Palmer Dabbelt <palmer@dabbelt.com> Cc: Albert Ou <aou@eecs.berkeley.edu> Cc: Alexandre Ghiti <alex@ghiti.fr> Cc: linux-riscv@lists.infradead.org Signed-off-by: Thomas Huth <thuth@redhat.com> Link: https://lore.kernel.org/r/20250606070952.498274-3-thuth@redhat.com Signed-off-by: Paul Walmsley <pjw@kernel.org>
41 lines
1003 B
C
41 lines
1003 B
C
/* SPDX-License-Identifier: GPL-2.0-only */
|
|
/*
|
|
* Based on arm/arm64/include/asm/current.h
|
|
*
|
|
* Copyright (C) 2016 ARM
|
|
* Copyright (C) 2017 SiFive
|
|
*/
|
|
|
|
|
|
#ifndef _ASM_RISCV_CURRENT_H
|
|
#define _ASM_RISCV_CURRENT_H
|
|
|
|
#include <linux/bug.h>
|
|
#include <linux/compiler.h>
|
|
|
|
#ifndef __ASSEMBLER__
|
|
|
|
struct task_struct;
|
|
|
|
register struct task_struct *riscv_current_is_tp __asm__("tp");
|
|
|
|
/*
|
|
* This only works because "struct thread_info" is at offset 0 from "struct
|
|
* task_struct". This constraint seems to be necessary on other architectures
|
|
* as well, but __switch_to enforces it. We can't check TASK_TI here because
|
|
* <asm/asm-offsets.h> includes this, and I can't get the definition of "struct
|
|
* task_struct" here due to some header ordering problems.
|
|
*/
|
|
static __always_inline struct task_struct *get_current(void)
|
|
{
|
|
return riscv_current_is_tp;
|
|
}
|
|
|
|
#define current get_current()
|
|
|
|
register unsigned long current_stack_pointer __asm__("sp");
|
|
|
|
#endif /* __ASSEMBLER__ */
|
|
|
|
#endif /* _ASM_RISCV_CURRENT_H */
|