34 lines
658 B
C
34 lines
658 B
C
/*
|
|
* Copyright (c) 2019 Intel Corporation
|
|
* Copyright (c) 2019 Stephanos Ioannidis <root@stephanos.io>
|
|
*
|
|
* SPDX-License-Identifier: Apache-2.0
|
|
*/
|
|
|
|
#ifndef ZEPHYR_INCLUDE_ARCH_X86_ARCH_INLINES_H_
|
|
#define ZEPHYR_INCLUDE_ARCH_X86_ARCH_INLINES_H_
|
|
|
|
#ifndef _ASMLANGUAGE
|
|
|
|
#if defined(CONFIG_X86_64)
|
|
|
|
#include <arch/x86/intel64/thread.h>
|
|
#include <kernel_structs.h>
|
|
|
|
static inline struct _cpu *arch_curr_cpu(void)
|
|
{
|
|
struct _cpu *cpu;
|
|
|
|
__asm__ volatile("movq %%gs:(%c1), %0"
|
|
: "=r" (cpu)
|
|
: "i" (offsetof(x86_tss64_t, cpu)));
|
|
|
|
return cpu;
|
|
}
|
|
|
|
#endif /* CONFIG_X86_64 */
|
|
|
|
#endif /* !_ASMLANGUAGE */
|
|
|
|
#endif /* ZEPHYR_INCLUDE_ARCH_X86_ARCH_INLINES_H_ */
|