162306a36Sopenharmony_ci/*
262306a36Sopenharmony_ci * Copyright (C) 2000 - 2007 Jeff Dike (jdike@{addtoit,linux.intel}.com)
362306a36Sopenharmony_ci * Licensed under the GPL
462306a36Sopenharmony_ci */
562306a36Sopenharmony_ci
662306a36Sopenharmony_ci#ifndef __SYS_SIGCONTEXT_X86_H
762306a36Sopenharmony_ci#define __SYS_SIGCONTEXT_X86_H
862306a36Sopenharmony_ci
962306a36Sopenharmony_ciextern void get_regs_from_mc(struct uml_pt_regs *, mcontext_t *);
1062306a36Sopenharmony_ci
1162306a36Sopenharmony_ci#ifdef __i386__
1262306a36Sopenharmony_ci
1362306a36Sopenharmony_ci#define GET_FAULTINFO_FROM_MC(fi, mc) \
1462306a36Sopenharmony_ci	{ \
1562306a36Sopenharmony_ci		(fi).cr2 = (mc)->cr2; \
1662306a36Sopenharmony_ci		(fi).error_code = (mc)->gregs[REG_ERR]; \
1762306a36Sopenharmony_ci		(fi).trap_no = (mc)->gregs[REG_TRAPNO]; \
1862306a36Sopenharmony_ci	}
1962306a36Sopenharmony_ci
2062306a36Sopenharmony_ci#else
2162306a36Sopenharmony_ci
2262306a36Sopenharmony_ci#define GET_FAULTINFO_FROM_MC(fi, mc) \
2362306a36Sopenharmony_ci	{ \
2462306a36Sopenharmony_ci		(fi).cr2 = (mc)->gregs[REG_CR2]; \
2562306a36Sopenharmony_ci		(fi).error_code = (mc)->gregs[REG_ERR]; \
2662306a36Sopenharmony_ci		(fi).trap_no = (mc)->gregs[REG_TRAPNO]; \
2762306a36Sopenharmony_ci	}
2862306a36Sopenharmony_ci
2962306a36Sopenharmony_ci#endif
3062306a36Sopenharmony_ci
3162306a36Sopenharmony_ci#endif
32