1345703Skib/*- 2345703Skib * SPDX-License-Identifier: BSD-2-Clause-FreeBSD 3345703Skib * 4345703Skib * Copyright (c) 2019 The FreeBSD Foundation 5345703Skib * 6345703Skib * This software was developed by Konstantin Belousov <kib@FreeBSD.org> 7345703Skib * under sponsorship from the FreeBSD Foundation. 8345703Skib * 9345703Skib * Redistribution and use in source and binary forms, with or without 10345703Skib * modification, are permitted provided that the following conditions 11345703Skib * are met: 12345703Skib * 1. Redistributions of source code must retain the above copyright 13345703Skib * notice, this list of conditions and the following disclaimer. 14345703Skib * 2. Redistributions in binary form must reproduce the above copyright 15345703Skib * notice, this list of conditions and the following disclaimer in the 16345703Skib * documentation and/or other materials provided with the distribution. 17345703Skib * 18345703Skib * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND 19345703Skib * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 20345703Skib * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 21345703Skib * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE 22345703Skib * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 23345703Skib * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 24345703Skib * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 25345703Skib * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 26345703Skib * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 27345703Skib * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 28345703Skib * SUCH DAMAGE. 29345703Skib * 30345703Skib * $FreeBSD: stable/11/lib/libthr/arch/i386/include/pthread_tls.h 346156 2019-04-12 15:15:27Z kib $ 31345703Skib */ 32345703Skib 33345703Skib#ifndef _ARCH_I386_PTHREAD_TLS_H 34345703Skib#define _ARCH_I386_PTHREAD_TLS_H 35345703Skib 36345703Skibstatic __inline uintptr_t 37345703Skib_get_static_tls_base(struct pthread *thr, size_t offset) 38345703Skib{ 39345703Skib uintptr_t tlsbase; 40345703Skib 41345703Skib tlsbase = (uintptr_t)thr->tcb; 42345703Skib tlsbase -= offset; 43345703Skib return (tlsbase); 44345703Skib} 45345703Skib 46345703Skib#endif 47