/*
 * This file is part of the UCB release of Plan 9. It is subject to the license
 * terms in the LICENSE file found in the top-level directory of this
 * distribution and at http://akaros.cs.berkeley.edu/files/Plan9License. No
 * part of the UCB release of Plan 9, including this file, may be copied,
 * modified, propagated, or distributed except according to the terms contained
 * in the LICENSE file.
 */

struct Ureg {
	uint64_t	ax;
	uint64_t	bx;
	uint64_t	cx;
	uint64_t	dx;
	uint64_t	si;
	uint64_t	di;
	uint64_t	bp;
	uint64_t	r8;
	uint64_t	r9;
	uint64_t	r10;
	uint64_t	r11;
	uint64_t	r12;
	uint64_t	r13;
	uint64_t	r14;
	uint64_t	r15;

  // these are pointless and I don't want to waste a second on them.
  // I'm sure it will break something but let's see.
  // Not pushing them simplifies the interrupt handler a lot.
  //	uint16_t	ds;
  //	uint16_t	es;
  //	uint16_t	fs;
  //	uint16_t	gs;

	uint64_t	type;
	uint64_t	error;			/* error code (or zero) */
	uint64_t	ip;				/* pc */
	uint64_t	cs;				/* old context */
	uint64_t	flags;			/* old flags */
	uint64_t	sp;				/* sp */
	uint64_t	ss;				/* old stack segment */
};
