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