/*
 * This is a machine-generated file. Please do not edit it by hand.
 * (As of sbcl-0.8.14, it came from WRITE-CONFIG-H in genesis.lisp.)
 *
 * This file contains low-level information about the
 * internals of a particular version and configuration
 * of SBCL. It is used by the C compiler to create a runtime
 * support environment, an executable program in the host
 * operating system's native format, which can then be used to
 * load and run 'core' files, which are basically programs
 * in SBCL's own format.
 */
#ifndef SBCL_GENESIS_THREAD
#define SBCL_GENESIS_THREAD
#define THREAD_HEADER_SLOTS 0

#ifdef __ASSEMBLER__

/* These offsets are SLOT-OFFSET * N-WORD-BYTES - LOWTAG
 * so they work directly on tagged addresses. */

#define THREAD_NO_TLS_VALUE_MARKER_OFFSET 0
#define THREAD_OS_THREAD_OFFSET 4
#define THREAD_BINDING_STACK_POINTER_OFFSET 8
#define THREAD_ALIEN_STACK_POINTER_OFFSET 12
#define THREAD_STEPPING_OFFSET 16
#define THREAD_PROFILE_DATA_OFFSET 20
#define THREAD_MIXED_TLAB_OFFSET 24
#define THREAD_UNBOXED_TLAB_OFFSET 40
#define THREAD_OS_ADDRESS_OFFSET 56
#define THREAD_OS_KERNEL_TID_OFFSET 60
#define THREAD_ALIEN_STACK_START_OFFSET 64
#define THREAD_BINDING_STACK_START_OFFSET 68
#define THREAD_CONTROL_STACK_START_OFFSET 72
#define THREAD_CONTROL_STACK_END_OFFSET 76
#define THREAD_THIS_OFFSET 80
#define THREAD_PREV_OFFSET 84
#define THREAD_NEXT_OFFSET 88
#define THREAD_STATE_WORD_OFFSET 92
#define THREAD_SPROF_DATA_OFFSET 96
#define THREAD_TOT_BYTES_ALLOC_BOXED_OFFSET 100
#define THREAD_TOT_BYTES_ALLOC_UNBOXED_OFFSET 104
#define THREAD_SLOW_PATH_ALLOCS_OFFSET 108
#define THREAD_ET_ALLOCATOR_MUTEX_ACQ_OFFSET 112
#define THREAD_ET_FIND_FREEISH_PAGE_OFFSET 116
#define THREAD_ET_BZEROING_OFFSET 120
#define THREAD_OBJ_SIZE_HISTO_OFFSET 124
#define THREAD_LISP_THREAD_OFFSET 380
#define THREAD_SIZE 96

#else /* __ASSEMBLER__ */

#include "lispobj.h"
struct thread {
    lispobj no_tls_value_marker;
    lispobj os_thread;
    lispobj * binding_stack_pointer;
    lispobj * alien_stack_pointer;
    lispobj stepping;
    uword_t * profile_data;
    struct alloc_region mixed_tlab;
    struct alloc_region unboxed_tlab;
    void * os_address;
    lispobj os_kernel_tid;
    lispobj * alien_stack_start;
    lispobj * binding_stack_start;
    lispobj * control_stack_start;
    lispobj * control_stack_end;
    struct thread * this;
    struct thread * prev;
    struct thread * next;
    struct thread_state_word state_word;
    lispobj sprof_data;
    lispobj tot_bytes_alloc_boxed;
    lispobj tot_bytes_alloc_unboxed;
    lispobj slow_path_allocs;
    lispobj et_allocator_mutex_acq;
    lispobj et_find_freeish_page;
    lispobj et_bzeroing;
    size_histogram obj_size_histo;
    lispobj lisp_thread;
};

#endif /* __ASSEMBLER__ */
#endif
