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

/**
 * @file
 * @brief Stack frame created by swap (IA-32)
 *
 * This file details the stack frame generated by _Swap() when it saves a task
 * or fiber's context. This is specific to the IA-32 processor architecture.
 *
 * NOTE: _Swap() does not use this file as it uses the push instruction to
 * save a context. Changes to the file will not automatically be picked up by
 * _Swap().  Conversely, changes to _Swap() should be mirrored here if the
 * stack frame is modified.
 */

#ifndef _SWAPSTK_H
#define _SWAPSTK_H

#ifdef __cplusplus
extern "C" {
#endif

#ifndef _ASMLANGUAGE

/* Stack of a saved context */
typedef struct s_SwapStk {
	unsigned int eax;     /* EAX register */
	unsigned int ebp;     /* EBP register */
	unsigned int ebx;     /* EBX register */
	unsigned int esi;     /* ESI register */
	unsigned int edi;     /* EDI register */
	unsigned int retAddr; /* Return address of caller of _Swap() */
	unsigned int param;   /* Parameter passed to _Swap() */
} tSwapStk;

#endif /* _ASMLANGUAGE */

#ifdef __cplusplus
}
#endif

#endif /* _SWAPSTK_H */
