138eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt/* 238eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt * HND Run Time Environment debug info area 338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt * 438eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt * Copyright (C) 1999-2013, Broadcom Corporation 538eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt * 638eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt * Permission to use, copy, modify, and/or distribute this software for any 738eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt * purpose with or without fee is hereby granted, provided that the above 838eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt * copyright notice and this permission notice appear in all copies. 938eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt * 1038eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES 1138eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF 1238eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY 1338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt * SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES 1438eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION 1538eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN 1638eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. 1738eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt * 1838eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt * $Id: hndrte_debug.h 342211 2012-07-02 02:23:04Z $ 1938eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt */ 2038eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt 2138eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#ifndef _HNDRTE_DEBUG_H 2238eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define _HNDRTE_DEBUG_H 2338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt 2438eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt/* Magic number at a magic location to find HNDRTE_DEBUG pointers */ 2538eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define HNDRTE_DEBUG_PTR_PTR_ADDR 0xf8 2638eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define HNDRTE_DEBUG_PTR_PTR_MAGIC 0x50504244 /* DBPP */ 2738eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt 2838eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#ifndef _LANGUAGE_ASSEMBLY 2938eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt 3038eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt/* Includes only when building dongle code */ 3138eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt 3238eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt 3338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define NUM_EVENT_LOG_SETS 4 3438eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt 3538eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt/* We use explicit sizes here since this gets included from different 3638eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt * systems. The sizes must be the size of the creating system 3738eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt * (currently 32 bit ARM) since this is gleaned from dump. 3838eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt */ 3938eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt 4038eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt/* Define pointers for use on other systems */ 4138eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define _HD_EVLOG_P uint32 4238eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define _HD_CONS_P uint32 4338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define _HD_TRAP_P uint32 4438eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt 4538eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidttypedef struct hndrte_debug { 4638eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt uint32 magic; 4738eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define HNDRTE_DEBUG_MAGIC 0x47424544 /* 'DEBG' */ 4838eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt 4938eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt uint32 version; /* Debug struct version */ 5038eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define HNDRTE_DEBUG_VERSION 1 5138eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt 5238eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt uint32 fwid; /* 4 bytes of fw info */ 5338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt char epivers[32]; 5438eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt 5538eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt _HD_TRAP_P trap_ptr; /* trap_t data struct */ 5638eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt _HD_CONS_P console; /* Console */ 5738eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt 5838eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt uint32 ram_base; 5938eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt uint32 ram_size; 6038eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt 6138eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt uint32 rom_base; 6238eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt uint32 rom_size; 6338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt 6438eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt _HD_EVLOG_P event_log_top; 6538eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt 6638eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt} hndrte_debug_t; 6738eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt 6838eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt/* 6938eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt * timeval_t and prstatus_t are copies of the Linux structures. 7038eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt * Included here because we need the definitions for the target processor 7138eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt * (32 bits) and not the definition on the host this is running on 7238eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt * (which could be 64 bits). 7338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt */ 7438eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt 7538eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidttypedef struct { /* Time value with microsecond resolution */ 7638eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt uint32 tv_sec; /* Seconds */ 7738eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt uint32 tv_usec; /* Microseconds */ 7838eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt} timeval_t; 7938eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt 8038eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt 8138eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt/* Linux/ARM 32 prstatus for notes section */ 8238eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidttypedef struct prstatus { 8338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt int32 si_signo; /* Signal number */ 8438eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt int32 si_code; /* Extra code */ 8538eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt int32 si_errno; /* Errno */ 8638eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt uint16 pr_cursig; /* Current signal. */ 8738eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt uint16 unused; 8838eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt uint32 pr_sigpend; /* Set of pending signals. */ 8938eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt uint32 pr_sighold; /* Set of held signals. */ 9038eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt uint32 pr_pid; 9138eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt uint32 pr_ppid; 9238eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt uint32 pr_pgrp; 9338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt uint32 pr_sid; 9438eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt timeval_t pr_utime; /* User time. */ 9538eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt timeval_t pr_stime; /* System time. */ 9638eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt timeval_t pr_cutime; /* Cumulative user time. */ 9738eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt timeval_t pr_cstime; /* Cumulative system time. */ 9838eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt uint32 uregs[18]; 9938eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt int32 pr_fpvalid; /* True if math copro being used. */ 10038eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt} prstatus_t; 10138eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt 10238eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#ifdef DUMP_INFO 10338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidtextern hndrte_debug_t hndrte_debug_info __attribute__ ((weak)); 10438eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#endif 10538eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt 10638eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#endif /* LANGUAGE_ASSEMBLY */ 10738eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt 10838eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#endif /* _HNDRTE_DEBUG_H */ 109