1147b9d04SAndrew Turner /*- 2147b9d04SAndrew Turner * Copyright (c) 2014 Andrew Turner 3147b9d04SAndrew Turner * Copyright (c) 2014-2015 The FreeBSD Foundation 4147b9d04SAndrew Turner * All rights reserved. 5147b9d04SAndrew Turner * 6147b9d04SAndrew Turner * This software was developed by Andrew Turner under 7147b9d04SAndrew Turner * sponsorship from the FreeBSD Foundation. 8147b9d04SAndrew Turner * 9147b9d04SAndrew Turner * Redistribution and use in source and binary forms, with or without 10147b9d04SAndrew Turner * modification, are permitted provided that the following conditions 11147b9d04SAndrew Turner * are met: 12147b9d04SAndrew Turner * 1. Redistributions of source code must retain the above copyright 13147b9d04SAndrew Turner * notice, this list of conditions and the following disclaimer. 14147b9d04SAndrew Turner * 2. Redistributions in binary form must reproduce the above copyright 15147b9d04SAndrew Turner * notice, this list of conditions and the following disclaimer in the 16147b9d04SAndrew Turner * documentation and/or other materials provided with the distribution. 17147b9d04SAndrew Turner * 18147b9d04SAndrew Turner * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND 19147b9d04SAndrew Turner * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 20147b9d04SAndrew Turner * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 21147b9d04SAndrew Turner * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE 22147b9d04SAndrew Turner * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 23147b9d04SAndrew Turner * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 24147b9d04SAndrew Turner * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 25147b9d04SAndrew Turner * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 26147b9d04SAndrew Turner * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 27147b9d04SAndrew Turner * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 28147b9d04SAndrew Turner * SUCH DAMAGE. 29147b9d04SAndrew Turner */ 30147b9d04SAndrew Turner 31d5d97bedSMike Karels #ifdef __arm__ 32d5d97bedSMike Karels #include <arm/reg.h> 33d5d97bedSMike Karels #else /* !__arm__ */ 34d5d97bedSMike Karels 35147b9d04SAndrew Turner #ifndef _MACHINE_REG_H_ 36147b9d04SAndrew Turner #define _MACHINE_REG_H_ 37147b9d04SAndrew Turner 388ee8271eSWarner Losh #include <sys/_types.h> 398ee8271eSWarner Losh 40147b9d04SAndrew Turner struct reg { 418ee8271eSWarner Losh __uint64_t x[30]; 428ee8271eSWarner Losh __uint64_t lr; 438ee8271eSWarner Losh __uint64_t sp; 448ee8271eSWarner Losh __uint64_t elr; 452ecbbcc7SZachary Leaf __uint64_t spsr; 46147b9d04SAndrew Turner }; 47147b9d04SAndrew Turner 489dcf90f8SEd Schouten struct reg32 { 498c9c3144SOlivier Houchard unsigned int r[13]; 508c9c3144SOlivier Houchard unsigned int r_sp; 518c9c3144SOlivier Houchard unsigned int r_lr; 528c9c3144SOlivier Houchard unsigned int r_pc; 538c9c3144SOlivier Houchard unsigned int r_cpsr; 549dcf90f8SEd Schouten }; 559dcf90f8SEd Schouten 56147b9d04SAndrew Turner struct fpreg { 57147b9d04SAndrew Turner __uint128_t fp_q[32]; 588ee8271eSWarner Losh __uint32_t fp_sr; 598ee8271eSWarner Losh __uint32_t fp_cr; 60147b9d04SAndrew Turner }; 61147b9d04SAndrew Turner 629dcf90f8SEd Schouten struct fpreg32 { 639dcf90f8SEd Schouten int dummy; 649dcf90f8SEd Schouten }; 659dcf90f8SEd Schouten 66*aab60068SAndrew Turner #define SVEREG_FLAG_REGS_MASK 0x0001 67*aab60068SAndrew Turner #define SVEREG_FLAG_FP 0x0000 68*aab60068SAndrew Turner #define SVEREG_FLAG_SVE 0x0001 69*aab60068SAndrew Turner 70*aab60068SAndrew Turner struct svereg_header { 71*aab60068SAndrew Turner __uint32_t sve_size; 72*aab60068SAndrew Turner __uint32_t sve_maxsize; 73*aab60068SAndrew Turner __uint16_t sve_vec_len; 74*aab60068SAndrew Turner __uint16_t sve_max_vec_len; 75*aab60068SAndrew Turner __uint16_t sve_flags; 76*aab60068SAndrew Turner __uint16_t sve_reserved; 77*aab60068SAndrew Turner }; 78*aab60068SAndrew Turner 79147b9d04SAndrew Turner struct dbreg { 808ee8271eSWarner Losh __uint8_t db_debug_ver; 818ee8271eSWarner Losh __uint8_t db_nbkpts; 828ee8271eSWarner Losh __uint8_t db_nwtpts; 838ee8271eSWarner Losh __uint8_t db_pad[5]; 8405f39d1aSAndrew Turner 8505f39d1aSAndrew Turner struct { 868ee8271eSWarner Losh __uint64_t dbr_addr; 878ee8271eSWarner Losh __uint32_t dbr_ctrl; 888ee8271eSWarner Losh __uint32_t dbr_pad; 89f2583be1SMitchell Horne } db_breakregs[16]; 90f2583be1SMitchell Horne struct { 918ee8271eSWarner Losh __uint64_t dbw_addr; 928ee8271eSWarner Losh __uint32_t dbw_ctrl; 938ee8271eSWarner Losh __uint32_t dbw_pad; 94f2583be1SMitchell Horne } db_watchregs[16]; 95147b9d04SAndrew Turner }; 96147b9d04SAndrew Turner 979dcf90f8SEd Schouten struct dbreg32 { 989dcf90f8SEd Schouten int dummy; 999dcf90f8SEd Schouten }; 1009dcf90f8SEd Schouten 1016713be31SAndrew Turner struct arm64_addr_mask { 1026713be31SAndrew Turner __uint64_t code; 1036713be31SAndrew Turner __uint64_t data; 1046713be31SAndrew Turner }; 1056713be31SAndrew Turner 1069dcf90f8SEd Schouten #define __HAVE_REG32 1079dcf90f8SEd Schouten 108147b9d04SAndrew Turner #endif /* !_MACHINE_REG_H_ */ 109d5d97bedSMike Karels 110d5d97bedSMike Karels #endif /* !__arm__ */ 111