The FAST_STREAM_TRANSFERS compile time option has been removed due to lack of use and low cost/benefit ratio.
Add GCC_FORCE_POINTER_ACCESS() macro use to the RingBuffer library header, to attempt to force GCC into producing more efficient code for manipulating the buffers.
This commit is contained in:
		
							parent
							
								
									1c74fd78bd
								
							
						
					
					
						commit
						d126146887
					
				
					 8 changed files with 17 additions and 173 deletions
				
			
		| 
						 | 
				
			
			@ -44,46 +44,6 @@ uint8_t Endpoint_Discard_Stream(uint16_t Length
 | 
			
		|||
	if ((ErrorCode = Endpoint_WaitUntilReady()))
 | 
			
		||||
	  return ErrorCode;
 | 
			
		||||
 | 
			
		||||
	#if defined(FAST_STREAM_TRANSFERS)
 | 
			
		||||
	uint8_t BytesRemToAlignment = (Endpoint_BytesInEndpoint() & 0x07);
 | 
			
		||||
 | 
			
		||||
	if (Length >= 8)
 | 
			
		||||
	{
 | 
			
		||||
		Length -= BytesRemToAlignment;
 | 
			
		||||
 | 
			
		||||
		switch (BytesRemToAlignment)
 | 
			
		||||
		{
 | 
			
		||||
			default:
 | 
			
		||||
				do
 | 
			
		||||
				{
 | 
			
		||||
					if (!(Endpoint_IsReadWriteAllowed()))
 | 
			
		||||
					{
 | 
			
		||||
						Endpoint_ClearOUT();
 | 
			
		||||
 | 
			
		||||
						#if !defined(NO_STREAM_CALLBACKS)
 | 
			
		||||
						if ((Callback != NULL) && (Callback() == STREAMCALLBACK_Abort))
 | 
			
		||||
						  return ENDPOINT_RWSTREAM_CallbackAborted;
 | 
			
		||||
						#endif
 | 
			
		||||
 | 
			
		||||
						if ((ErrorCode = Endpoint_WaitUntilReady()))
 | 
			
		||||
						  return ErrorCode;
 | 
			
		||||
					}
 | 
			
		||||
 | 
			
		||||
					Length -= 8;
 | 
			
		||||
					
 | 
			
		||||
					Endpoint_Discard_Byte();
 | 
			
		||||
			case 7: Endpoint_Discard_Byte();
 | 
			
		||||
			case 6: Endpoint_Discard_Byte();
 | 
			
		||||
			case 5: Endpoint_Discard_Byte();
 | 
			
		||||
			case 4: Endpoint_Discard_Byte();
 | 
			
		||||
			case 3: Endpoint_Discard_Byte();
 | 
			
		||||
			case 2: Endpoint_Discard_Byte();
 | 
			
		||||
			case 1:	Endpoint_Discard_Byte();
 | 
			
		||||
				} while (Length >= 8);	
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
	#endif
 | 
			
		||||
 | 
			
		||||
	while (Length)
 | 
			
		||||
	{
 | 
			
		||||
		if (!(Endpoint_IsReadWriteAllowed()))
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -45,46 +45,6 @@ uint8_t Pipe_Discard_Stream(uint16_t Length
 | 
			
		|||
	if ((ErrorCode = Pipe_WaitUntilReady()))
 | 
			
		||||
	  return ErrorCode;
 | 
			
		||||
 | 
			
		||||
	#if defined(FAST_STREAM_TRANSFERS)
 | 
			
		||||
	uint8_t BytesRemToAlignment = (Pipe_BytesInPipe() & 0x07);
 | 
			
		||||
 | 
			
		||||
	if (Length >= 8)
 | 
			
		||||
	{
 | 
			
		||||
		Length -= BytesRemToAlignment;
 | 
			
		||||
 | 
			
		||||
		switch (BytesRemToAlignment)
 | 
			
		||||
		{
 | 
			
		||||
			default:
 | 
			
		||||
				do
 | 
			
		||||
				{
 | 
			
		||||
					if (!(Pipe_IsReadWriteAllowed()))
 | 
			
		||||
					{
 | 
			
		||||
						Pipe_ClearIN();
 | 
			
		||||
							
 | 
			
		||||
						#if !defined(NO_STREAM_CALLBACKS)
 | 
			
		||||
						if ((Callback != NULL) && (Callback() == STREAMCALLBACK_Abort))
 | 
			
		||||
						  return PIPE_RWSTREAM_CallbackAborted;
 | 
			
		||||
						#endif
 | 
			
		||||
 | 
			
		||||
						if ((ErrorCode = Pipe_WaitUntilReady()))
 | 
			
		||||
						  return ErrorCode;
 | 
			
		||||
					}
 | 
			
		||||
 | 
			
		||||
					Length -= 8;
 | 
			
		||||
					
 | 
			
		||||
					Pipe_Discard_Byte();
 | 
			
		||||
			case 7: Pipe_Discard_Byte();
 | 
			
		||||
			case 6: Pipe_Discard_Byte();
 | 
			
		||||
			case 5: Pipe_Discard_Byte();
 | 
			
		||||
			case 4: Pipe_Discard_Byte();
 | 
			
		||||
			case 3: Pipe_Discard_Byte();
 | 
			
		||||
			case 2: Pipe_Discard_Byte();
 | 
			
		||||
			case 1:	Pipe_Discard_Byte();
 | 
			
		||||
				} while (Length >= 8);	
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
	#endif
 | 
			
		||||
 | 
			
		||||
	while (Length)
 | 
			
		||||
	{
 | 
			
		||||
		if (!(Pipe_IsReadWriteAllowed()))
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -8,46 +8,6 @@ uint8_t TEMPLATE_FUNC_NAME (TEMPLATE_BUFFER_TYPE Buffer,
 | 
			
		|||
	if ((ErrorCode = Endpoint_WaitUntilReady()))
 | 
			
		||||
	  return ErrorCode;
 | 
			
		||||
 | 
			
		||||
	#if defined(FAST_STREAM_TRANSFERS)
 | 
			
		||||
	uint8_t BytesRemToAlignment = (Endpoint_BytesInEndpoint() & 0x07);
 | 
			
		||||
 | 
			
		||||
	if (Length >= 8)
 | 
			
		||||
	{
 | 
			
		||||
		Length -= BytesRemToAlignment;
 | 
			
		||||
 | 
			
		||||
		switch (BytesRemToAlignment)
 | 
			
		||||
		{
 | 
			
		||||
			default:
 | 
			
		||||
				do
 | 
			
		||||
				{
 | 
			
		||||
					if (!(Endpoint_IsReadWriteAllowed()))
 | 
			
		||||
					{
 | 
			
		||||
						TEMPLATE_CLEAR_ENDPOINT();
 | 
			
		||||
 | 
			
		||||
						#if !defined(NO_STREAM_CALLBACKS)
 | 
			
		||||
						if ((Callback != NULL) && (Callback() == STREAMCALLBACK_Abort))
 | 
			
		||||
						  return ENDPOINT_RWSTREAM_CallbackAborted;
 | 
			
		||||
						#endif
 | 
			
		||||
 | 
			
		||||
						if ((ErrorCode = Endpoint_WaitUntilReady()))
 | 
			
		||||
						  return ErrorCode;
 | 
			
		||||
					}
 | 
			
		||||
 | 
			
		||||
					Length -= 8;
 | 
			
		||||
 | 
			
		||||
					TEMPLATE_TRANSFER_BYTE(DataStream);
 | 
			
		||||
			case 7: TEMPLATE_TRANSFER_BYTE(DataStream);
 | 
			
		||||
			case 6: TEMPLATE_TRANSFER_BYTE(DataStream);
 | 
			
		||||
			case 5: TEMPLATE_TRANSFER_BYTE(DataStream);
 | 
			
		||||
			case 4: TEMPLATE_TRANSFER_BYTE(DataStream);
 | 
			
		||||
			case 3: TEMPLATE_TRANSFER_BYTE(DataStream);
 | 
			
		||||
			case 2: TEMPLATE_TRANSFER_BYTE(DataStream);
 | 
			
		||||
			case 1:	TEMPLATE_TRANSFER_BYTE(DataStream);
 | 
			
		||||
				} while (Length >= 8);
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
	#endif
 | 
			
		||||
 | 
			
		||||
	while (Length)
 | 
			
		||||
	{
 | 
			
		||||
		if (!(Endpoint_IsReadWriteAllowed()))
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -10,46 +10,6 @@ uint8_t TEMPLATE_FUNC_NAME (TEMPLATE_BUFFER_TYPE Buffer,
 | 
			
		|||
	if ((ErrorCode = Pipe_WaitUntilReady()))
 | 
			
		||||
	  return ErrorCode;
 | 
			
		||||
 | 
			
		||||
	#if defined(FAST_STREAM_TRANSFERS)
 | 
			
		||||
	uint8_t BytesRemToAlignment = (Pipe_BytesInPipe() & 0x07);
 | 
			
		||||
 | 
			
		||||
	if (Length >= 8)
 | 
			
		||||
	{
 | 
			
		||||
		Length -= BytesRemToAlignment;
 | 
			
		||||
 | 
			
		||||
		switch (BytesRemToAlignment)
 | 
			
		||||
		{
 | 
			
		||||
			default:
 | 
			
		||||
				do
 | 
			
		||||
				{
 | 
			
		||||
					if (!(Pipe_IsReadWriteAllowed()))
 | 
			
		||||
					{
 | 
			
		||||
						TEMPLATE_CLEAR_PIPE();
 | 
			
		||||
 | 
			
		||||
						#if !defined(NO_STREAM_CALLBACKS)
 | 
			
		||||
						if ((Callback != NULL) && (Callback() == STREAMCALLBACK_Abort))
 | 
			
		||||
						  return PIPE_RWSTREAM_CallbackAborted;
 | 
			
		||||
						#endif
 | 
			
		||||
 | 
			
		||||
						if ((ErrorCode = Pipe_WaitUntilReady()))
 | 
			
		||||
						  return ErrorCode;
 | 
			
		||||
					}
 | 
			
		||||
 | 
			
		||||
					Length -= 8;
 | 
			
		||||
 | 
			
		||||
					TEMPLATE_TRANSFER_BYTE(DataStream);
 | 
			
		||||
			case 7: TEMPLATE_TRANSFER_BYTE(DataStream);
 | 
			
		||||
			case 6: TEMPLATE_TRANSFER_BYTE(DataStream);
 | 
			
		||||
			case 5: TEMPLATE_TRANSFER_BYTE(DataStream);
 | 
			
		||||
			case 4: TEMPLATE_TRANSFER_BYTE(DataStream);
 | 
			
		||||
			case 3: TEMPLATE_TRANSFER_BYTE(DataStream);
 | 
			
		||||
			case 2: TEMPLATE_TRANSFER_BYTE(DataStream);
 | 
			
		||||
			case 1:	TEMPLATE_TRANSFER_BYTE(DataStream);
 | 
			
		||||
				} while (Length >= 8);
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
	#endif
 | 
			
		||||
 | 
			
		||||
	while (Length)
 | 
			
		||||
	{
 | 
			
		||||
		if (!(Pipe_IsReadWriteAllowed()))
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue