+++ /dev/null
-/* $NetBSD: _regset.h,v 1.1 2006/04/07 14:21:18 cherry Exp $ */\r
-\r
-/*-\r
- * Copyright (c) 2002, 2003 Marcel Moolenaar\r
- * All rights reserved.\r
- *\r
- * Redistribution and use in source and binary forms, with or without\r
- * modification, are permitted provided that the following conditions\r
- * are met:\r
- *\r
- * 1. Redistributions of source code must retain the above copyright\r
- * notice, this list of conditions and the following disclaimer.\r
- * 2. Redistributions in binary form must reproduce the above copyright\r
- * notice, this list of conditions and the following disclaimer in the\r
- * documentation and/or other materials provided with the distribution.\r
- *\r
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR\r
- * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES\r
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.\r
- * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,\r
- * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT\r
- * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,\r
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY\r
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\r
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF\r
- * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\r
- *\r
- * $FreeBSD$\r
- */\r
-\r
-#ifndef _MACHINE_REGSET_H_\r
-#define _MACHINE_REGSET_H_\r
-\r
-/*\r
- * Create register sets, based on the runtime specification. This allows\r
- * us to better reuse code and to copy sets around more efficiently.\r
- * Contexts are defined in terms of these sets. These include trapframe,\r
- * sigframe, pcb, mcontext, reg and fpreg. Other candidates are unwind\r
- * and coredump related contexts.\r
- *\r
- * Notes:\r
- * o Constant registers (r0, f0 and f1) are not accounted for,\r
- * o The stacked registers (r32-r127) are not accounted for,\r
- * o Predicates are not split across sets.\r
- */\r
-\r
-/* A single FP register. */\r
-union _ia64_fpreg {\r
- unsigned char fpr_bits[16];\r
- long double fpr_flt;\r
-};\r
-\r
-/*\r
- * Special registers.\r
- */\r
-struct _special {\r
- unsigned long sp;\r
- unsigned long unat; /* NaT before spilling */\r
- unsigned long rp;\r
- unsigned long pr;\r
- unsigned long pfs;\r
- unsigned long bspstore;\r
- unsigned long rnat;\r
- unsigned long __spare;\r
- /* Userland context and syscalls */\r
- unsigned long tp;\r
- unsigned long rsc;\r
- unsigned long fpsr;\r
- unsigned long psr;\r
- /* ASYNC: Interrupt specific */\r
- unsigned long gp;\r
- unsigned long ndirty;\r
- unsigned long cfm;\r
- unsigned long iip;\r
- unsigned long ifa;\r
- unsigned long isr;\r
-};\r
-\r
-struct _high_fp {\r
- union _ia64_fpreg fr32;\r
- union _ia64_fpreg fr33;\r
- union _ia64_fpreg fr34;\r
- union _ia64_fpreg fr35;\r
- union _ia64_fpreg fr36;\r
- union _ia64_fpreg fr37;\r
- union _ia64_fpreg fr38;\r
- union _ia64_fpreg fr39;\r
- union _ia64_fpreg fr40;\r
- union _ia64_fpreg fr41;\r
- union _ia64_fpreg fr42;\r
- union _ia64_fpreg fr43;\r
- union _ia64_fpreg fr44;\r
- union _ia64_fpreg fr45;\r
- union _ia64_fpreg fr46;\r
- union _ia64_fpreg fr47;\r
- union _ia64_fpreg fr48;\r
- union _ia64_fpreg fr49;\r
- union _ia64_fpreg fr50;\r
- union _ia64_fpreg fr51;\r
- union _ia64_fpreg fr52;\r
- union _ia64_fpreg fr53;\r
- union _ia64_fpreg fr54;\r
- union _ia64_fpreg fr55;\r
- union _ia64_fpreg fr56;\r
- union _ia64_fpreg fr57;\r
- union _ia64_fpreg fr58;\r
- union _ia64_fpreg fr59;\r
- union _ia64_fpreg fr60;\r
- union _ia64_fpreg fr61;\r
- union _ia64_fpreg fr62;\r
- union _ia64_fpreg fr63;\r
- union _ia64_fpreg fr64;\r
- union _ia64_fpreg fr65;\r
- union _ia64_fpreg fr66;\r
- union _ia64_fpreg fr67;\r
- union _ia64_fpreg fr68;\r
- union _ia64_fpreg fr69;\r
- union _ia64_fpreg fr70;\r
- union _ia64_fpreg fr71;\r
- union _ia64_fpreg fr72;\r
- union _ia64_fpreg fr73;\r
- union _ia64_fpreg fr74;\r
- union _ia64_fpreg fr75;\r
- union _ia64_fpreg fr76;\r
- union _ia64_fpreg fr77;\r
- union _ia64_fpreg fr78;\r
- union _ia64_fpreg fr79;\r
- union _ia64_fpreg fr80;\r
- union _ia64_fpreg fr81;\r
- union _ia64_fpreg fr82;\r
- union _ia64_fpreg fr83;\r
- union _ia64_fpreg fr84;\r
- union _ia64_fpreg fr85;\r
- union _ia64_fpreg fr86;\r
- union _ia64_fpreg fr87;\r
- union _ia64_fpreg fr88;\r
- union _ia64_fpreg fr89;\r
- union _ia64_fpreg fr90;\r
- union _ia64_fpreg fr91;\r
- union _ia64_fpreg fr92;\r
- union _ia64_fpreg fr93;\r
- union _ia64_fpreg fr94;\r
- union _ia64_fpreg fr95;\r
- union _ia64_fpreg fr96;\r
- union _ia64_fpreg fr97;\r
- union _ia64_fpreg fr98;\r
- union _ia64_fpreg fr99;\r
- union _ia64_fpreg fr100;\r
- union _ia64_fpreg fr101;\r
- union _ia64_fpreg fr102;\r
- union _ia64_fpreg fr103;\r
- union _ia64_fpreg fr104;\r
- union _ia64_fpreg fr105;\r
- union _ia64_fpreg fr106;\r
- union _ia64_fpreg fr107;\r
- union _ia64_fpreg fr108;\r
- union _ia64_fpreg fr109;\r
- union _ia64_fpreg fr110;\r
- union _ia64_fpreg fr111;\r
- union _ia64_fpreg fr112;\r
- union _ia64_fpreg fr113;\r
- union _ia64_fpreg fr114;\r
- union _ia64_fpreg fr115;\r
- union _ia64_fpreg fr116;\r
- union _ia64_fpreg fr117;\r
- union _ia64_fpreg fr118;\r
- union _ia64_fpreg fr119;\r
- union _ia64_fpreg fr120;\r
- union _ia64_fpreg fr121;\r
- union _ia64_fpreg fr122;\r
- union _ia64_fpreg fr123;\r
- union _ia64_fpreg fr124;\r
- union _ia64_fpreg fr125;\r
- union _ia64_fpreg fr126;\r
- union _ia64_fpreg fr127;\r
-};\r
-\r
-/*\r
- * Preserved registers.\r
- */\r
-struct _callee_saved {\r
- unsigned long unat; /* NaT after spilling. */\r
- unsigned long gr4;\r
- unsigned long gr5;\r
- unsigned long gr6;\r
- unsigned long gr7;\r
- unsigned long br1;\r
- unsigned long br2;\r
- unsigned long br3;\r
- unsigned long br4;\r
- unsigned long br5;\r
- unsigned long lc;\r
- unsigned long __spare;\r
-};\r
-\r
-struct _callee_saved_fp {\r
- union _ia64_fpreg fr2;\r
- union _ia64_fpreg fr3;\r
- union _ia64_fpreg fr4;\r
- union _ia64_fpreg fr5;\r
- union _ia64_fpreg fr16;\r
- union _ia64_fpreg fr17;\r
- union _ia64_fpreg fr18;\r
- union _ia64_fpreg fr19;\r
- union _ia64_fpreg fr20;\r
- union _ia64_fpreg fr21;\r
- union _ia64_fpreg fr22;\r
- union _ia64_fpreg fr23;\r
- union _ia64_fpreg fr24;\r
- union _ia64_fpreg fr25;\r
- union _ia64_fpreg fr26;\r
- union _ia64_fpreg fr27;\r
- union _ia64_fpreg fr28;\r
- union _ia64_fpreg fr29;\r
- union _ia64_fpreg fr30;\r
- union _ia64_fpreg fr31;\r
-};\r
-\r
-/*\r
- * Scratch registers.\r
- */\r
-struct _caller_saved {\r
- unsigned long unat; /* NaT after spilling. */\r
- unsigned long gr2;\r
- unsigned long gr3;\r
- unsigned long gr8;\r
- unsigned long gr9;\r
- unsigned long gr10;\r
- unsigned long gr11;\r
- unsigned long gr14;\r
- unsigned long gr15;\r
- unsigned long gr16;\r
- unsigned long gr17;\r
- unsigned long gr18;\r
- unsigned long gr19;\r
- unsigned long gr20;\r
- unsigned long gr21;\r
- unsigned long gr22;\r
- unsigned long gr23;\r
- unsigned long gr24;\r
- unsigned long gr25;\r
- unsigned long gr26;\r
- unsigned long gr27;\r
- unsigned long gr28;\r
- unsigned long gr29;\r
- unsigned long gr30;\r
- unsigned long gr31;\r
- unsigned long br6;\r
- unsigned long br7;\r
- unsigned long ccv;\r
- unsigned long csd;\r
- unsigned long ssd;\r
-};\r
-\r
-struct _caller_saved_fp {\r
- union _ia64_fpreg fr6;\r
- union _ia64_fpreg fr7;\r
- union _ia64_fpreg fr8;\r
- union _ia64_fpreg fr9;\r
- union _ia64_fpreg fr10;\r
- union _ia64_fpreg fr11;\r
- union _ia64_fpreg fr12;\r
- union _ia64_fpreg fr13;\r
- union _ia64_fpreg fr14;\r
- union _ia64_fpreg fr15;\r
-};\r
-\r
-#ifdef _KERNEL\r
-void restore_callee_saved(const struct _callee_saved *);\r
-void restore_callee_saved_fp(const struct _callee_saved_fp *);\r
-void restore_high_fp(const struct _high_fp *);\r
-void save_callee_saved(struct _callee_saved *);\r
-void save_callee_saved_fp(struct _callee_saved_fp *);\r
-void save_high_fp(struct _high_fp *);\r
-#endif\r
-\r
-#endif /* _MACHINE_REGSET_H_ */\r