Compare commits

...

2 commits

Author SHA1 Message Date
creiter64
e9440d4079
Move windows headers to port.c (#1302)
* [MSVC-MingW] Move windows headers to port.c

This prevents the inclusion of windows.h. into all header files using
FreeRTOS.h and thus defining several macros conflicting with common
definitions.

* [MSVC-MingW] Include correct header for compiler intrinsics

---------

Co-authored-by: Gaurav-Aggarwal-AWS <33462878+aggarg@users.noreply.github.com>
2025-08-05 19:11:54 +08:00
Dennis Lambe Jr.
c5bec0e4b2
LLVM assembler compatibility for ARM_CRx_MPU (#1303)
GNU as makes unrecognized sections loadable and writable by default, but
LLVM's assembler requires specifying flags explicitly. Without them, the
linker generates "has non-ABS relocation" errors when trying to link the
resulting object files.
2025-08-05 16:02:03 +05:30
4 changed files with 15 additions and 15 deletions

View file

@ -30,7 +30,7 @@
.arm .arm
.syntax unified .syntax unified
.section freertos_system_calls .section freertos_system_calls, "ax"
#define FREERTOS_ASSEMBLY #define FREERTOS_ASSEMBLY
#include "FreeRTOSConfig.h" #include "FreeRTOSConfig.h"

View file

@ -28,7 +28,7 @@
.arm .arm
.syntax unified .syntax unified
.section privileged_functions .section privileged_functions, "ax"
#define FREERTOS_ASSEMBLY #define FREERTOS_ASSEMBLY
#include "portmacro_asm.h" #include "portmacro_asm.h"

View file

@ -33,6 +33,14 @@
#include "FreeRTOS.h" #include "FreeRTOS.h"
#include "task.h" #include "task.h"
#ifdef WIN32_LEAN_AND_MEAN
#include <winsock2.h>
#else
#include <winsock.h>
#endif
#include <timeapi.h>
#ifdef __GNUC__ #ifdef __GNUC__
#include "mmsystem.h" #include "mmsystem.h"
#else #else

View file

@ -29,17 +29,6 @@
#ifndef PORTMACRO_H #ifndef PORTMACRO_H
#define PORTMACRO_H #define PORTMACRO_H
#ifdef WIN32_LEAN_AND_MEAN
#include <winsock2.h>
#else
#include <winsock.h>
#endif
#include <windows.h>
#include <timeapi.h>
#include <mmsystem.h>
#include <winbase.h>
#ifdef __cplusplus #ifdef __cplusplus
extern "C" { extern "C" {
#endif #endif
@ -156,22 +145,25 @@ void vPortExitCritical( void );
: "cc" ) : "cc" )
#else /* __GNUC__ */ #else /* __GNUC__ */
#include <intrin.h>
/* BitScanReverse returns the bit position of the most significant '1' /* BitScanReverse returns the bit position of the most significant '1'
* in the word. */ * in the word. */
#if defined( __x86_64__ ) || defined( _M_X64 ) #if defined( __x86_64__ ) || defined( _M_X64 )
#pragma intrinsic(_BitScanReverse64)
#define portGET_HIGHEST_PRIORITY( uxTopPriority, uxReadyPriorities ) \ #define portGET_HIGHEST_PRIORITY( uxTopPriority, uxReadyPriorities ) \
do \ do \
{ \ { \
DWORD ulTopPriority; \ unsigned long ulTopPriority; \
_BitScanReverse64( &ulTopPriority, ( uxReadyPriorities ) ); \ _BitScanReverse64( &ulTopPriority, ( uxReadyPriorities ) ); \
uxTopPriority = ulTopPriority; \ uxTopPriority = ulTopPriority; \
} while( 0 ) } while( 0 )
#else /* #if defined( __x86_64__ ) || defined( _M_X64 ) */ #else /* #if defined( __x86_64__ ) || defined( _M_X64 ) */
#pragma intrinsic(_BitScanReverse)
#define portGET_HIGHEST_PRIORITY( uxTopPriority, uxReadyPriorities ) _BitScanReverse( ( DWORD * ) &( uxTopPriority ), ( uxReadyPriorities ) ) #define portGET_HIGHEST_PRIORITY( uxTopPriority, uxReadyPriorities ) _BitScanReverse( ( unsigned long * ) &( uxTopPriority ), ( uxReadyPriorities ) )
#endif /* #if defined( __x86_64__ ) || defined( _M_X64 ) */ #endif /* #if defined( __x86_64__ ) || defined( _M_X64 ) */