xref: /freebsd-src/sys/kern/subr_ticks.S (revision 159d29d3948294cdc9ee4cc3951d004de6797a32)
1b2b974f7SMark Johnston/*-
2b2b974f7SMark Johnston * SPDX-License-Identifier: BSD-2-Clause
3b2b974f7SMark Johnston *
4b2b974f7SMark Johnston * Copyright (c) 2025 Mark Johnston <markj@FreeBSD.org>
5b2b974f7SMark Johnston */
6b2b974f7SMark Johnston
7b2b974f7SMark Johnston/*
8b2b974f7SMark Johnston * Define the "ticks" and "ticksl" variables.  The former is overlaid onto the
9b2b974f7SMark Johnston * low bits of the latter.
10b2b974f7SMark Johnston */
11b2b974f7SMark Johnston
12b2b974f7SMark Johnston#if defined(__aarch64__)
13b2b974f7SMark Johnston#include <sys/elf_common.h>
14b2b974f7SMark Johnston#include <machine/asm.h>
15b2b974f7SMark Johnston
16b2b974f7SMark JohnstonGNU_PROPERTY_AARCH64_FEATURE_1_NOTE(GNU_PROPERTY_AARCH64_FEATURE_1_VAL)
17b2b974f7SMark Johnston#endif
18b2b974f7SMark Johnston
19b2b974f7SMark Johnston#if __BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__
20b2b974f7SMark Johnston#define	TICKS_OFFSET	0
21b2b974f7SMark Johnston#else
22b2b974f7SMark Johnston#define	TICKS_OFFSET	(__SIZEOF_LONG__ - __SIZEOF_INT__)
23b2b974f7SMark Johnston#endif
24b2b974f7SMark Johnston
25b2b974f7SMark Johnston	.bss
26b2b974f7SMark Johnston
27b2b974f7SMark Johnston	.global ticksl
28b2b974f7SMark Johnston	.type ticksl, %object
29*159d29d3SMark Johnston	.balign __SIZEOF_LONG__
30b2b974f7SMark Johnstonticksl:	.zero __SIZEOF_LONG__
31b2b974f7SMark Johnston	.size ticksl, __SIZEOF_LONG__
32b2b974f7SMark Johnston
33b2b974f7SMark Johnston	.global ticks
34b2b974f7SMark Johnston	.type ticks, %object
35b2b974f7SMark Johnstonticks	=ticksl + TICKS_OFFSET
36b2b974f7SMark Johnston	.size ticks, __SIZEOF_INT__
37