Gregs.c revision fd40db490a2aecd38c8c1f9644a7573d7c2edb2c
1fd40db490a2aecd38c8c1f9644a7573d7c2edb2chomeip.net!davidm/* libunwind - a platform-independent unwind library 2fd40db490a2aecd38c8c1f9644a7573d7c2edb2chomeip.net!davidm Copyright (C) 2003 Hewlett-Packard Co 3fd40db490a2aecd38c8c1f9644a7573d7c2edb2chomeip.net!davidm Contributed by ... 4fd40db490a2aecd38c8c1f9644a7573d7c2edb2chomeip.net!davidm 5fd40db490a2aecd38c8c1f9644a7573d7c2edb2chomeip.net!davidmThis file is part of libunwind. 6fd40db490a2aecd38c8c1f9644a7573d7c2edb2chomeip.net!davidm 7fd40db490a2aecd38c8c1f9644a7573d7c2edb2chomeip.net!davidmPermission is hereby granted, free of charge, to any person obtaining 8fd40db490a2aecd38c8c1f9644a7573d7c2edb2chomeip.net!davidma copy of this software and associated documentation files (the 9fd40db490a2aecd38c8c1f9644a7573d7c2edb2chomeip.net!davidm"Software"), to deal in the Software without restriction, including 10fd40db490a2aecd38c8c1f9644a7573d7c2edb2chomeip.net!davidmwithout limitation the rights to use, copy, modify, merge, publish, 11fd40db490a2aecd38c8c1f9644a7573d7c2edb2chomeip.net!davidmdistribute, sublicense, and/or sell copies of the Software, and to 12fd40db490a2aecd38c8c1f9644a7573d7c2edb2chomeip.net!davidmpermit persons to whom the Software is furnished to do so, subject to 13fd40db490a2aecd38c8c1f9644a7573d7c2edb2chomeip.net!davidmthe following conditions: 14fd40db490a2aecd38c8c1f9644a7573d7c2edb2chomeip.net!davidm 15fd40db490a2aecd38c8c1f9644a7573d7c2edb2chomeip.net!davidmThe above copyright notice and this permission notice shall be 16fd40db490a2aecd38c8c1f9644a7573d7c2edb2chomeip.net!davidmincluded in all copies or substantial portions of the Software. 17fd40db490a2aecd38c8c1f9644a7573d7c2edb2chomeip.net!davidm 18fd40db490a2aecd38c8c1f9644a7573d7c2edb2chomeip.net!davidmTHE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, 19fd40db490a2aecd38c8c1f9644a7573d7c2edb2chomeip.net!davidmEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 20fd40db490a2aecd38c8c1f9644a7573d7c2edb2chomeip.net!davidmMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND 21fd40db490a2aecd38c8c1f9644a7573d7c2edb2chomeip.net!davidmNONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE 22fd40db490a2aecd38c8c1f9644a7573d7c2edb2chomeip.net!davidmLIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION 23fd40db490a2aecd38c8c1f9644a7573d7c2edb2chomeip.net!davidmOF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION 24fd40db490a2aecd38c8c1f9644a7573d7c2edb2chomeip.net!davidmWITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ 25fd40db490a2aecd38c8c1f9644a7573d7c2edb2chomeip.net!davidm 26fd40db490a2aecd38c8c1f9644a7573d7c2edb2chomeip.net!davidm#include "unwind_i.h" 27fd40db490a2aecd38c8c1f9644a7573d7c2edb2chomeip.net!davidm 28fd40db490a2aecd38c8c1f9644a7573d7c2edb2chomeip.net!davidmHIDDEN int 29fd40db490a2aecd38c8c1f9644a7573d7c2edb2chomeip.net!davidmhppa_access_reg (struct cursor *c, unw_regnum_t reg, unw_word_t *valp, 30fd40db490a2aecd38c8c1f9644a7573d7c2edb2chomeip.net!davidm int write) 31fd40db490a2aecd38c8c1f9644a7573d7c2edb2chomeip.net!davidm{ 32fd40db490a2aecd38c8c1f9644a7573d7c2edb2chomeip.net!davidm struct hppa_loc loc = HPPA_LOC (0, 0); 33fd40db490a2aecd38c8c1f9644a7573d7c2edb2chomeip.net!davidm 34fd40db490a2aecd38c8c1f9644a7573d7c2edb2chomeip.net!davidm switch (reg) 35fd40db490a2aecd38c8c1f9644a7573d7c2edb2chomeip.net!davidm { 36fd40db490a2aecd38c8c1f9644a7573d7c2edb2chomeip.net!davidm case UNW_HPPA_IP: 37fd40db490a2aecd38c8c1f9644a7573d7c2edb2chomeip.net!davidm if (write) 38fd40db490a2aecd38c8c1f9644a7573d7c2edb2chomeip.net!davidm c->ip = *valp; /* also update the IP cache */ 39fd40db490a2aecd38c8c1f9644a7573d7c2edb2chomeip.net!davidm loc = c->ip_loc; 40fd40db490a2aecd38c8c1f9644a7573d7c2edb2chomeip.net!davidm break; 41fd40db490a2aecd38c8c1f9644a7573d7c2edb2chomeip.net!davidm 42fd40db490a2aecd38c8c1f9644a7573d7c2edb2chomeip.net!davidm case UNW_HPPA_SP: 43fd40db490a2aecd38c8c1f9644a7573d7c2edb2chomeip.net!davidm if (write) 44fd40db490a2aecd38c8c1f9644a7573d7c2edb2chomeip.net!davidm return -UNW_EREADONLYREG; 45fd40db490a2aecd38c8c1f9644a7573d7c2edb2chomeip.net!davidm *valp = c->sp; 46fd40db490a2aecd38c8c1f9644a7573d7c2edb2chomeip.net!davidm return 0; 47fd40db490a2aecd38c8c1f9644a7573d7c2edb2chomeip.net!davidm 48fd40db490a2aecd38c8c1f9644a7573d7c2edb2chomeip.net!davidm default: 49fd40db490a2aecd38c8c1f9644a7573d7c2edb2chomeip.net!davidm return -UNW_EBADREG; 50fd40db490a2aecd38c8c1f9644a7573d7c2edb2chomeip.net!davidm } 51fd40db490a2aecd38c8c1f9644a7573d7c2edb2chomeip.net!davidm 52fd40db490a2aecd38c8c1f9644a7573d7c2edb2chomeip.net!davidm if (write) 53fd40db490a2aecd38c8c1f9644a7573d7c2edb2chomeip.net!davidm return hppa_put (c, loc, *valp); 54fd40db490a2aecd38c8c1f9644a7573d7c2edb2chomeip.net!davidm else 55fd40db490a2aecd38c8c1f9644a7573d7c2edb2chomeip.net!davidm return hppa_get (c, loc, valp); 56fd40db490a2aecd38c8c1f9644a7573d7c2edb2chomeip.net!davidm} 57