/*
 * Copyright (c) 2016 Wind River Systems, Inc.
 *
 * SPDX-License-Identifier: Apache-2.0
 */

#ifndef ZEPHYR_ARCH_ARC_INCLUDE_OFFSETS_SHORT_ARCH_H_
#define ZEPHYR_ARCH_ARC_INCLUDE_OFFSETS_SHORT_ARCH_H_

#include <offsets.h>

/* kernel */

/* nothing for now */

/* end - kernel */

/* threads */

#define _thread_offset_to_relinquish_cause \
	(___thread_t_arch_OFFSET + ___thread_arch_t_relinquish_cause_OFFSET)

#define _thread_offset_to_k_stack_base \
	(___thread_t_arch_OFFSET + ___thread_arch_t_k_stack_base_OFFSET)

#define _thread_offset_to_k_stack_top \
	(___thread_t_arch_OFFSET + ___thread_arch_t_k_stack_top_OFFSET)

#define _thread_offset_to_u_stack_base \
	(___thread_t_arch_OFFSET + ___thread_arch_t_u_stack_base_OFFSET)

#define _thread_offset_to_u_stack_top \
	(___thread_t_arch_OFFSET + ___thread_arch_t_u_stack_top_OFFSET)

#define _thread_offset_to_priv_stack_start \
	(___thread_t_arch_OFFSET + ___thread_arch_t_priv_stack_start_OFFSET)

#define _thread_offset_to_sp \
	(___thread_t_callee_saved_OFFSET + ___callee_saved_t_sp_OFFSET)

/* end - threads */

#endif /* ZEPHYR_ARCH_ARC_INCLUDE_OFFSETS_SHORT_ARCH_H_ */
