mirror of
				https://github.com/0xFEEDC0DE64/arduino-esp32.git
				synced 2025-10-26 03:31:43 +01:00 
			
		
		
		
	* fix sdmmc config * Fix warnings in EEPROM from @Curclamas * remove leftover TAG in EEPROM * Initial add of @stickbreaker i2c * Add log_n * fix warnings when log is off * i2c code clean up and reorganization * add flags to interrupt allocator * fix sdmmc config * Fix warnings in EEPROM from @Curclamas * remove leftover TAG in EEPROM * fix errors with latest IDF * fix debug optimization (#1365) incorrect optimization for debugging tick markers. * Fix some missing BT header * Change BTSerial log calls * Update BLE lib * Arduino-ESP32 release management scripted (#1515) * Calculate an absolute path for a custom partitions table (#1452) * * Arduino-ESP32 release management scripted (ready-to-merge) * * secure env for espressif/arduino-esp32 * * build tests enabled * gitter webhook enabled * * gitter room link fixed * better comment * * filepaths fixed * BT Serial adjustments * * don't run sketch builds & tests for tagged builds * Return false from WiFi.hostByName() if hostname is not resolved * Free BT Memory when BT is not used * WIFI_MODE_NULL is not supported anymore * Select some key examples to build with PlatformIO to save some time * Update BLE lib * Fixed BLE lib * Major WiFi overhaul - auto reconnect on connection loss now works - moved to event groups - some code clean up and procedure optimizations - new methods to get a more elaborate system ststus * Add cmake tests to travis * Add initial AsyncUDP * Add NetBIOS lib and fix CMake includes * Add Initial WebServer * Fix WebServer and examples * travis not quiting on build fail * Try different travis build * Update IDF to aaf1239 * Fix WPS Example * fix script permission and add some fail tests to sketch builder * Add missing space in WiFiClient::write(Stream &stream)
		
			
				
	
	
		
			162 lines
		
	
	
		
			8.5 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			162 lines
		
	
	
		
			8.5 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
| /*
 | |
|  *  xtensa-libdb-macros.h
 | |
|  */
 | |
| 
 | |
| /* $Id: //depot/rel/Eaglenest/Xtensa/Software/libdb/xtensa-libdb-macros.h#1 $ */
 | |
| 
 | |
| /* Copyright (c) 2004-2008 Tensilica Inc.
 | |
| 
 | |
|    Permission is hereby granted, free of charge, to any person obtaining
 | |
|    a copy of this software and associated documentation files (the
 | |
|    "Software"), to deal in the Software without restriction, including
 | |
|    without limitation the rights to use, copy, modify, merge, publish,
 | |
|    distribute, sublicense, and/or sell copies of the Software, and to
 | |
|    permit persons to whom the Software is furnished to do so, subject to
 | |
|    the following conditions:
 | |
| 
 | |
|    The above copyright notice and this permission notice shall be included
 | |
|    in all copies or substantial portions of the Software.
 | |
| 
 | |
|    THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
 | |
|    EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
 | |
|    MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
 | |
|    IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
 | |
|    CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
 | |
|    TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
 | |
|    SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.  */
 | |
| 
 | |
| #ifndef __H_LIBDB_MACROS
 | |
| #define __H_LIBDB_MACROS
 | |
| 
 | |
| /*
 | |
|  *  This header file provides macros used to construct, identify and use
 | |
|  *  "target numbers" that are assigned to various types of Xtensa processor
 | |
|  *  registers and states.  These target numbers are used by GDB in the remote
 | |
|  *  protocol, and are thus used by all GDB debugger agents (targets).
 | |
|  *  They are also used in ELF debugger information sections (stabs, dwarf, etc).
 | |
|  *
 | |
|  *  These macros are separated from xtensa-libdb.h because they are needed
 | |
|  *  by certain debugger agents that do not use or have access to libdb,
 | |
|  *  e.g. the OCD daemon, RedBoot, XMON, etc.
 | |
|  *
 | |
|  *  For the time being, for compatibility with certain 3rd party debugger
 | |
|  *  software vendors, target numbers are limited to 16 bits.  It is
 | |
|  *  conceivable that this will be extended in the future to 32 bits.
 | |
|  */
 | |
| 
 | |
| #ifdef __cplusplus
 | |
| extern "C" {
 | |
| #endif
 | |
| 
 | |
| #ifndef uint32
 | |
|  #define uint32	unsigned int
 | |
| #endif
 | |
| #ifndef int32
 | |
|  #define int32	int
 | |
| #endif
 | |
| 
 | |
| 
 | |
| /*
 | |
|  *  Macros to form register "target numbers" for various standard registers/states:
 | |
|  */
 | |
| #define XTENSA_DBREGN_INVALID		-1		/* not a valid target number */
 | |
| #define XTENSA_DBREGN_A(n)		(0x0000+(n))	/* address registers a0..a15 */
 | |
| #define XTENSA_DBREGN_B(n)		(0x0010+(n))	/* boolean bits b0..b15 */
 | |
| #define XTENSA_DBREGN_PC		 0x0020		/* program counter */
 | |
| 				      /* 0x0021		   RESERVED for use by Tensilica */
 | |
| #define XTENSA_DBREGN_BO(n)		(0x0022+(n))	/* boolean octuple-bits bo0..bo1 */
 | |
| #define XTENSA_DBREGN_BQ(n)		(0x0024+(n))	/* boolean quadruple-bits bq0..bq3 */
 | |
| #define XTENSA_DBREGN_BD(n)		(0x0028+(n))	/* boolean double-bits bd0..bd7 */
 | |
| #define XTENSA_DBREGN_F(n)		(0x0030+(n))	/* floating point registers f0..f15 */
 | |
| #define XTENSA_DBREGN_VEC(n)		(0x0040+(n))	/* Vectra vec regs v0..v15 */
 | |
| #define XTENSA_DBREGN_VSEL(n)		(0x0050+(n))	/* Vectra sel s0..s3 (V1) ..s7 (V2) */
 | |
| #define XTENSA_DBREGN_VALIGN(n)		(0x0058+(n))	/* Vectra valign regs u0..u3 */
 | |
| #define XTENSA_DBREGN_VCOEFF(n)		(0x005C+(n))	/* Vectra I vcoeff regs c0..c1 */
 | |
| 				      /* 0x005E..0x005F	   RESERVED for use by Tensilica */
 | |
| #define XTENSA_DBREGN_AEP(n)		(0x0060+(n))	/* HiFi2 Audio Engine regs aep0..aep7 */
 | |
| #define XTENSA_DBREGN_AEQ(n)		(0x0068+(n))	/* HiFi2 Audio Engine regs aeq0..aeq3 */
 | |
| 				      /* 0x006C..0x00FF	   RESERVED for use by Tensilica */
 | |
| #define XTENSA_DBREGN_AR(n)		(0x0100+(n))	/* physical address regs ar0..ar63
 | |
| 							   (note: only with window option) */
 | |
| 				      /* 0x0140..0x01FF	   RESERVED for use by Tensilica */
 | |
| #define XTENSA_DBREGN_SREG(n)		(0x0200+(n))	/* special registers 0..255 (core) */
 | |
| #define XTENSA_DBREGN_BR		XTENSA_DBREGN_SREG(0x04)	/* all 16 boolean bits, BR */
 | |
| #define XTENSA_DBREGN_MR(n)		XTENSA_DBREGN_SREG(0x20+(n))	/* MAC16 registers m0..m3 */
 | |
| #define XTENSA_DBREGN_UREG(n)		(0x0300+(n))	/* user registers 0..255 (TIE) */
 | |
| 				      /* 0x0400..0x0FFF	   RESERVED for use by Tensilica */
 | |
| 				      /* 0x1000..0x1FFF	   user-defined regfiles */
 | |
| 				      /* 0x2000..0xEFFF	   other states (and regfiles) */
 | |
| #define XTENSA_DBREGN_DBAGENT(n)	(0xF000+(n))	/* non-processor "registers" 0..4095 for
 | |
| 							   3rd-party debugger agent defined use */
 | |
| 				      /* > 0xFFFF (32-bit) RESERVED for use by Tensilica */
 | |
| /*#define XTENSA_DBREGN_CONTEXT(n)	(0x02000000+((n)<<20))*/	/* add this macro's value to a target
 | |
| 							   number to identify a specific context 0..31
 | |
| 							   for context-replicated registers */
 | |
| #define XTENSA_DBREGN_MASK		0xFFFF		/* mask of valid target_number bits */
 | |
| #define XTENSA_DBREGN_WRITE_SIDE	0x04000000	/* flag to request write half of a register
 | |
| 							   split into distinct read and write entries
 | |
| 							   with the same target number (currently only
 | |
| 							   valid in a couple of libdb API functions;
 | |
| 							   see xtensa-libdb.h for details) */
 | |
| 
 | |
| /*
 | |
|  *  Macros to identify specific ranges of target numbers (formed above):
 | |
|  *  NOTE:  any context number (or other upper 12 bits) are considered
 | |
|  *  modifiers and are thus stripped out for identification purposes.
 | |
|  */
 | |
| #define XTENSA_DBREGN_IS_VALID(tn)	(((tn) & ~0xFFFF) == 0)	/* just tests it's 16-bit unsigned */
 | |
| #define XTENSA_DBREGN_IS_A(tn)		(((tn) & 0xFFF0)==0x0000)	/* is a0..a15 */
 | |
| #define XTENSA_DBREGN_IS_B(tn)		(((tn) & 0xFFF0)==0x0010)	/* is b0..b15 */
 | |
| #define XTENSA_DBREGN_IS_PC(tn)		(((tn) & 0xFFFF)==0x0020)	/* is program counter */
 | |
| #define XTENSA_DBREGN_IS_BO(tn)		(((tn) & 0xFFFE)==0x0022)	/* is bo0..bo1 */
 | |
| #define XTENSA_DBREGN_IS_BQ(tn)		(((tn) & 0xFFFC)==0x0024)	/* is bq0..bq3 */
 | |
| #define XTENSA_DBREGN_IS_BD(tn)		(((tn) & 0xFFF8)==0x0028)	/* is bd0..bd7 */
 | |
| #define XTENSA_DBREGN_IS_F(tn)		(((tn) & 0xFFF0)==0x0030)	/* is f0..f15 */
 | |
| #define XTENSA_DBREGN_IS_VEC(tn)	(((tn) & 0xFFF0)==0x0040)	/* is v0..v15 */
 | |
| #define XTENSA_DBREGN_IS_VSEL(tn)	(((tn) & 0xFFF8)==0x0050)	/* is s0..s7 (s0..s3 in V1) */
 | |
| #define XTENSA_DBREGN_IS_VALIGN(tn)	(((tn) & 0xFFFC)==0x0058)	/* is u0..u3 */
 | |
| #define XTENSA_DBREGN_IS_VCOEFF(tn)	(((tn) & 0xFFFE)==0x005C)	/* is c0..c1 */
 | |
| #define XTENSA_DBREGN_IS_AEP(tn)	(((tn) & 0xFFF8)==0x0060)	/* is aep0..aep7 */
 | |
| #define XTENSA_DBREGN_IS_AEQ(tn)	(((tn) & 0xFFFC)==0x0068)	/* is aeq0..aeq3 */
 | |
| #define XTENSA_DBREGN_IS_AR(tn)		(((tn) & 0xFFC0)==0x0100)	/* is ar0..ar63 */
 | |
| #define XTENSA_DBREGN_IS_SREG(tn)	(((tn) & 0xFF00)==0x0200)	/* is special register */
 | |
| #define XTENSA_DBREGN_IS_BR(tn)		(((tn) & 0xFFFF)==XTENSA_DBREGN_SREG(0x04))	/* is BR */
 | |
| #define XTENSA_DBREGN_IS_MR(tn)		(((tn) & 0xFFFC)==XTENSA_DBREGN_SREG(0x20))	/* m0..m3 */
 | |
| #define XTENSA_DBREGN_IS_UREG(tn)	(((tn) & 0xFF00)==0x0300)	/* is user register */
 | |
| #define XTENSA_DBREGN_IS_DBAGENT(tn)	(((tn) & 0xF000)==0xF000)	/* is non-processor */
 | |
| /*#define XTENSA_DBREGN_IS_CONTEXT(tn)	(((tn) & 0x02000000) != 0)*/	/* specifies context # */
 | |
| 
 | |
| /*
 | |
|  *  Macros to extract register index from a register "target number"
 | |
|  *  when a specific range has been identified using one of the _IS_ macros above.
 | |
|  *  These macros only return a useful value if the corresponding _IS_ macro returns true.
 | |
|  */
 | |
| #define XTENSA_DBREGN_A_INDEX(tn)	((tn) & 0x0F)		/* 0..15  for a0..a15 */
 | |
| #define XTENSA_DBREGN_B_INDEX(tn)	((tn) & 0x0F)		/* 0..15  for b0..b15 */
 | |
| #define XTENSA_DBREGN_BO_INDEX(tn)	((tn) & 0x01)		/* 0..1   for bo0..bo1 */
 | |
| #define XTENSA_DBREGN_BQ_INDEX(tn)	((tn) & 0x03)		/* 0..3   for bq0..bq3 */
 | |
| #define XTENSA_DBREGN_BD_INDEX(tn)	((tn) & 0x07)		/* 0..7   for bd0..bd7 */
 | |
| #define XTENSA_DBREGN_F_INDEX(tn)	((tn) & 0x0F)		/* 0..15  for f0..f15 */
 | |
| #define XTENSA_DBREGN_VEC_INDEX(tn)	((tn) & 0x0F)		/* 0..15  for v0..v15 */
 | |
| #define XTENSA_DBREGN_VSEL_INDEX(tn)	((tn) & 0x07)		/* 0..7   for s0..s7 */
 | |
| #define XTENSA_DBREGN_VALIGN_INDEX(tn)	((tn) & 0x03)		/* 0..3   for u0..u3 */
 | |
| #define XTENSA_DBREGN_VCOEFF_INDEX(tn)	((tn) & 0x01)		/* 0..1   for c0..c1 */
 | |
| #define XTENSA_DBREGN_AEP_INDEX(tn)	((tn) & 0x07)		/* 0..7   for aep0..aep7 */
 | |
| #define XTENSA_DBREGN_AEQ_INDEX(tn)	((tn) & 0x03)		/* 0..3   for aeq0..aeq3 */
 | |
| #define XTENSA_DBREGN_AR_INDEX(tn)	((tn) & 0x3F)		/* 0..63  for ar0..ar63 */
 | |
| #define XTENSA_DBREGN_SREG_INDEX(tn)	((tn) & 0xFF)		/* 0..255 for special registers */
 | |
| #define XTENSA_DBREGN_MR_INDEX(tn)	((tn) & 0x03)		/* 0..3   for m0..m3 */
 | |
| #define XTENSA_DBREGN_UREG_INDEX(tn)	((tn) & 0xFF)		/* 0..255 for user registers */
 | |
| #define XTENSA_DBREGN_DBAGENT_INDEX(tn)	((tn) & 0xFFF)		/* 0..4095 for non-processor */
 | |
| /*#define XTENSA_DBREGN_CONTEXT_INDEX(tn)	(((tn) >> 20) & 0x1F)*/	/* 0..31  context numbers */
 | |
| 
 | |
| 
 | |
| 
 | |
| 
 | |
| #ifdef __cplusplus
 | |
| }
 | |
| #endif
 | |
|       
 | |
| #endif /* __H_LIBDB_MACROS */
 | |
| 
 |