Revert Portable/oWatcom formatting (#829)

Revert the formatting on oWatcom ports
This commit is contained in:
Soren Ptak 2023-12-07 11:40:50 -05:00 committed by GitHub
parent 0debe8c669
commit bcf7bdaa13
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
6 changed files with 264 additions and 280 deletions

View file

@ -27,21 +27,21 @@
*/
/*
* Changes from V1.00:
*
Changes from V1.00:
+ Call to taskYIELD() from within tick ISR has been replaced by the more
+ efficient portSWITCH_CONTEXT().
efficient portSWITCH_CONTEXT().
+ ISR function definitions renamed to include the prv prefix.
+
+ Changes from V1.2.0:
+
Changes from V1.2.0:
+ portRESET_PIC() is now called last thing before the end of the preemptive
+ tick routine.
+
+ Changes from V2.6.1
+
tick routine.
Changes from V2.6.1
+ Replaced the sUsingPreemption variable with the configUSE_PREEMPTION
+ macro to be consistent with the later ports.
macro to be consistent with the later ports.
*/
/*-----------------------------------------------------------
@ -75,14 +75,12 @@ static void prvSetTickFrequency( uint32_t ulTickRateHz );
static void prvExitFunction( void );
#if configUSE_PREEMPTION == 1
/* Tick service routine used by the scheduler when preemptive scheduling is
* being used. */
being used. */
static void __interrupt __far prvPreemptiveTick( void );
#else
/* Tick service routine used by the scheduler when cooperative scheduling is
* being used. */
being used. */
static void __interrupt __far prvNonPreemptiveTick( void );
#endif
@ -108,11 +106,11 @@ BaseType_t xPortStartScheduler( void )
/* This is called with interrupts already disabled. */
/* Remember what was on the interrupts we are going to use
* so we can put them back later if required. */
so we can put them back later if required. */
pxOldSwitchISR = _dos_getvect( portSWITCH_INT_NUMBER );
/* Put our manual switch (yield) function on a known
* vector. */
vector. */
_dos_setvect( portSWITCH_INT_NUMBER, prvYieldProcessor );
#if configUSE_PREEMPTION == 1
@ -148,7 +146,7 @@ BaseType_t xPortStartScheduler( void )
/*-----------------------------------------------------------*/
/* The tick ISR used depend on whether or not the preemptive or cooperative
* kernel is being used. */
kernel is being used. */
#if configUSE_PREEMPTION == 1
static void __interrupt __far prvPreemptiveTick( void )
{
@ -162,15 +160,15 @@ BaseType_t xPortStartScheduler( void )
/* Reset the PIC ready for the next time. */
portRESET_PIC();
}
#else /* if configUSE_PREEMPTION == 1 */
#else
static void __interrupt __far prvNonPreemptiveTick( void )
{
/* Same as preemptive tick, but the cooperative scheduler is being used
* so we don't have to switch in the context of the next task. */
so we don't have to switch in the context of the next task. */
xTaskIncrementTick();
portRESET_PIC();
}
#endif /* if configUSE_PREEMPTION == 1 */
#endif
/*-----------------------------------------------------------*/
static void __interrupt __far prvYieldProcessor( void )
@ -183,8 +181,8 @@ static void __interrupt __far prvYieldProcessor( void )
void vPortEndScheduler( void )
{
/* Jump back to the processor state prior to starting the
* scheduler. This means we are not going to be using a
* task stack frame so the task can be deleted. */
scheduler. This means we are not going to be using a
task stack frame so the task can be deleted. */
longjmp( xJumpBuf, 1 );
}
/*-----------------------------------------------------------*/
@ -195,19 +193,18 @@ static void prvExitFunction( void )
uint16_t usTimer0Control;
/* Interrupts should be disabled here anyway - but no
* harm in making sure. */
harm in making sure. */
portDISABLE_INTERRUPTS();
if( sSchedulerRunning == pdTRUE )
{
/* Put back the switch interrupt routines that was in place
* before the scheduler started. */
before the scheduler started. */
_dos_setvect( portSWITCH_INT_NUMBER, pxOldSwitchISR );
}
/* Disable the timer used for the tick to ensure the scheduler is
* not called before restoring interrupts. There was previously nothing
* on this timer so there is no old ISR to restore. */
not called before restoring interrupts. There was previously nothing
on this timer so there is no old ISR to restore. */
portOUTPUT_WORD( portTIMER_1_CONTROL_REGISTER, usTimerDisable );
/* Restart the DOS tick. */

View file

@ -27,26 +27,26 @@
*/
/*
* Changes from V1.00:
*
Changes from V1.00:
+ Call to taskYIELD() from within tick ISR has been replaced by the more
+ efficient portSWITCH_CONTEXT().
efficient portSWITCH_CONTEXT().
+ ISR function definitions renamed to include the prv prefix.
+
+ Changes from V1.2.0:
+
Changes from V1.2.0:
+ prvPortResetPIC() is now called last thing before the end of the
+ preemptive tick routine.
+
+ Changes from V2.6.1
+
preemptive tick routine.
Changes from V2.6.1
+ Replaced the sUsingPreemption variable with the configUSE_PREEMPTION
+ macro to be consistent with the later ports.
+
+ Changes from V4.0.1
+
macro to be consistent with the later ports.
Changes from V4.0.1
+ Add function prvSetTickFrequencyDefault() to set the DOS tick back to
+ its proper value when the scheduler exits.
its proper value when the scheduler exits.
*/
#include <stdlib.h>
@ -75,28 +75,26 @@ static void prvSetTickFrequency( uint32_t ulTickRateHz );
static void prvExitFunction( void );
/* Either chain to the DOS tick (which itself clears the PIC) or clear the PIC
* directly. We chain to the DOS tick as close as possible to the standard DOS
* tick rate. */
directly. We chain to the DOS tick as close as possible to the standard DOS
tick rate. */
static void prvPortResetPIC( void );
/* The tick ISR used depends on whether the preemptive or cooperative scheduler
* is being used. */
is being used. */
#if configUSE_PREEMPTION == 1
/* Tick service routine used by the scheduler when preemptive scheduling is
* being used. */
being used. */
static void __interrupt __far prvPreemptiveTick( void );
#else
/* Tick service routine used by the scheduler when cooperative scheduling is
* being used. */
being used. */
static void __interrupt __far prvNonPreemptiveTick( void );
#endif
/* Trap routine used by taskYIELD() to manually cause a context switch. */
static void __interrupt __far prvYieldProcessor( void );
/* Set the tick frequency back so the floppy drive works correctly when the
* scheduler exits. */
scheduler exits. */
static void prvSetTickFrequencyDefault( void );
/*lint -e956 File scopes necessary here. */
@ -126,7 +124,7 @@ BaseType_t xPortStartScheduler( void )
/* This is called with interrupts already disabled. */
/* Remember what was on the interrupts we are going to use
* so we can put them back later if required. */
so we can put them back later if required. */
pxOldSwitchISR = _dos_getvect( portSWITCH_INT_NUMBER );
pxOriginalTickISR = _dos_getvect( portTIMER_INT_NUMBER );
pxOldSwitchISRPlus1 = _dos_getvect( portSWITCH_INT_NUMBER + 1 );
@ -134,11 +132,11 @@ BaseType_t xPortStartScheduler( void )
prvSetTickFrequency( configTICK_RATE_HZ );
/* Put our manual switch (yield) function on a known
* vector. */
vector. */
_dos_setvect( portSWITCH_INT_NUMBER, prvYieldProcessor );
/* Put the old tick on a different interrupt number so we can
* call it when we want. */
call it when we want. */
_dos_setvect( portSWITCH_INT_NUMBER + 1, pxOriginalTickISR );
#if configUSE_PREEMPTION == 1
@ -154,8 +152,8 @@ BaseType_t xPortStartScheduler( void )
#endif
/* Setup a counter that is used to call the DOS interrupt as close
* to it's original frequency as can be achieved given our chosen tick
* frequency. */
to it's original frequency as can be achieved given our chosen tick
frequency. */
sDOSTickCounter = portTICKS_PER_DOS_TICK;
/* Clean up function if we want to return to DOS. */
@ -177,11 +175,10 @@ BaseType_t xPortStartScheduler( void )
/*-----------------------------------------------------------*/
/* The tick ISR used depends on whether the preemptive or cooperative scheduler
* is being used. */
is being used. */
#if configUSE_PREEMPTION == 1
/* Tick service routine used by the scheduler when preemptive scheduling is
* being used. */
being used. */
static void __interrupt __far prvPreemptiveTick( void )
{
/* Get the scheduler to update the task states following the tick. */
@ -194,15 +191,15 @@ BaseType_t xPortStartScheduler( void )
/* Reset the PIC ready for the next time. */
prvPortResetPIC();
}
#else /* if configUSE_PREEMPTION == 1 */
#else
static void __interrupt __far prvNonPreemptiveTick( void )
{
/* Same as preemptive tick, but the cooperative scheduler is being used
* so we don't have to switch in the context of the next task. */
so we don't have to switch in the context of the next task. */
xTaskIncrementTick();
prvPortResetPIC();
}
#endif /* if configUSE_PREEMPTION == 1 */
#endif
/*-----------------------------------------------------------*/
@ -216,22 +213,19 @@ static void __interrupt __far prvYieldProcessor( void )
static void prvPortResetPIC( void )
{
/* We are going to call the DOS tick interrupt at as close a
* frequency to the normal DOS tick as possible. */
frequency to the normal DOS tick as possible. */
/* WE SHOULD NOT DO THIS IF YIELD WAS CALLED. */
--sDOSTickCounter;
if( sDOSTickCounter <= 0 )
{
sDOSTickCounter = ( int16_t ) portTICKS_PER_DOS_TICK;
__asm {
int portSWITCH_INT_NUMBER + 1
};
__asm{ int portSWITCH_INT_NUMBER + 1 };
}
else
{
/* Reset the PIC as the DOS tick is not being called to
* do it. */
do it. */
__asm
{
mov al, 20H
@ -244,8 +238,8 @@ static void prvPortResetPIC( void )
void vPortEndScheduler( void )
{
/* Jump back to the processor state prior to starting the
* scheduler. This means we are not going to be using a
* task stack frame so the task can be deleted. */
scheduler. This means we are not going to be using a
task stack frame so the task can be deleted. */
longjmp( xJumpBuf, 1 );
}
/*-----------------------------------------------------------*/
@ -255,9 +249,8 @@ static void prvExitFunction( void )
void ( __interrupt __far *pxOriginalTickISR )();
/* Interrupts should be disabled here anyway - but no
* harm in making sure. */
harm in making sure. */
portDISABLE_INTERRUPTS();
if( sSchedulerRunning == pdTRUE )
{
/* Set the DOS tick back onto the timer ticker. */
@ -266,13 +259,12 @@ static void prvExitFunction( void )
prvSetTickFrequencyDefault();
/* Put back the switch interrupt routines that was in place
* before the scheduler started. */
before the scheduler started. */
_dos_setvect( portSWITCH_INT_NUMBER, pxOldSwitchISR );
_dos_setvect( portSWITCH_INT_NUMBER + 1, pxOldSwitchISRPlus1 );
}
/* The tick timer is back how DOS wants it. We can re-enable
* interrupts without the scheduler being called. */
interrupts without the scheduler being called. */
portENABLE_INTERRUPTS();
}
/*-----------------------------------------------------------*/

View file

@ -71,7 +71,7 @@ typedef unsigned short UBaseType_t;
/*-----------------------------------------------------------*/
/* Critical section definitions. portENTER_CRITICAL() must be defined as a
* macro for portable.h to work properly. */
macro for portable.h to work properly. */
void portLOCAL_ENTER_CRITICAL( void );
#pragma aux portLOCAL_ENTER_CRITICAL = "pushf" \
"cli";

View file

@ -45,10 +45,10 @@ void portSWITCH_CONTEXT( void );
void portFIRST_CONTEXT( void );
/* There are slightly different versions depending on whether you are building
* to include debugger information. If debugger information is used then there
* are a couple of extra bytes left of the ISR stack (presumably for use by the
* debugger). The true stack pointer is then stored in the bp register. We add
* 2 to the stack pointer to remove the extra bytes before we restore our context. */
to include debugger information. If debugger information is used then there
are a couple of extra bytes left of the ISR stack (presumably for use by the
debugger). The true stack pointer is then stored in the bp register. We add
2 to the stack pointer to remove the extra bytes before we restore our context. */
#ifdef DEBUG_BUILD
@ -80,7 +80,7 @@ void portFIRST_CONTEXT( void );
"pop ds" \
"popa" \
"iret"
#else /* ifdef DEBUG_BUILD */
#else
#pragma aux portSWITCH_CONTEXT = "mov ax, seg pxCurrentTCB" \
"mov ds, ax" \
@ -106,4 +106,4 @@ void portFIRST_CONTEXT( void );
"pop ds" \
"popa" \
"iret"
#endif /* ifdef DEBUG_BUILD */
#endif

View file

@ -27,19 +27,19 @@
*/
/*
* Changes from V1.00:
*
Changes from V1.00:
+ pxPortInitialiseStack() now initialises the stack of new tasks to the
+ same format used by the compiler. This allows the compiler generated
+ interrupt mechanism to be used for context switches.
+
+ Changes from V2.4.2:
+
same format used by the compiler. This allows the compiler generated
interrupt mechanism to be used for context switches.
Changes from V2.4.2:
+ pvPortMalloc and vPortFree have been removed. The projects now use
+ the definitions from the source/portable/MemMang directory.
+
+ Changes from V2.6.1:
+
the definitions from the source/portable/MemMang directory.
Changes from V2.6.1:
+ usPortCheckFreeStackSpace() has been moved to tasks.c.
*/
@ -51,15 +51,13 @@
/*-----------------------------------------------------------*/
/* See header file for description. */
StackType_t * pxPortInitialiseStack( StackType_t * pxTopOfStack,
TaskFunction_t pxCode,
void * pvParameters )
StackType_t *pxPortInitialiseStack( StackType_t *pxTopOfStack, TaskFunction_t pxCode, void *pvParameters )
{
StackType_t DS_Reg = 0;
StackType_t * pxOriginalSP;
/* Place a few bytes of known values on the bottom of the stack.
* This is just useful for debugging. */
This is just useful for debugging. */
*pxTopOfStack = 0x1111;
pxTopOfStack--;
@ -76,9 +74,9 @@ StackType_t * pxPortInitialiseStack( StackType_t * pxTopOfStack,
/*lint -e950 -e611 -e923 Lint doesn't like this much - but nothing I can do about it. */
/* We are going to start the scheduler using a return from interrupt
* instruction to load the program counter, so first there would be the
* status register and interrupt return address. We make this the start
* of the task. */
instruction to load the program counter, so first there would be the
status register and interrupt return address. We make this the start
of the task. */
*pxTopOfStack = portINITIAL_SW;
pxTopOfStack--;
*pxTopOfStack = FP_SEG( pxCode );
@ -87,15 +85,15 @@ StackType_t * pxPortInitialiseStack( StackType_t * pxTopOfStack,
pxTopOfStack--;
/* We are going to setup the stack for the new task to look like
* the stack frame was setup by a compiler generated ISR. We need to know
* the address of the existing stack top to place in the SP register within
* the stack frame. pxOriginalSP holds SP before (simulated) pusha was
* called. */
the stack frame was setup by a compiler generated ISR. We need to know
the address of the existing stack top to place in the SP register within
the stack frame. pxOriginalSP holds SP before (simulated) pusha was
called. */
pxOriginalSP = pxTopOfStack;
/* The remaining registers would be pushed on the stack by our context
* switch function. These are loaded with values simply to make debugging
* easier. */
switch function. These are loaded with values simply to make debugging
easier. */
*pxTopOfStack = FP_OFF( pvParameters ); /* AX */
pxTopOfStack--;
*pxTopOfStack = ( StackType_t ) 0xCCCC; /* CX */
@ -113,9 +111,7 @@ StackType_t * pxPortInitialiseStack( StackType_t * pxTopOfStack,
*pxTopOfStack = ( StackType_t ) 0xDDDD; /* DI */
/* We need the true data segment. */
__asm {
MOV DS_Reg, DS
};
__asm{ MOV DS_Reg, DS };
pxTopOfStack--;
*pxTopOfStack = DS_Reg; /* DS */
@ -131,11 +127,10 @@ StackType_t * pxPortInitialiseStack( StackType_t * pxTopOfStack,
#ifdef DEBUG_BUILD
/* The compiler adds space to each ISR stack if building to
* include debug information. Presumably this is used by the
* debugger - we don't need to initialise it to anything just
* make sure it is there. */
include debug information. Presumably this is used by the
debugger - we don't need to initialise it to anything just
make sure it is there. */
pxTopOfStack--;
#endif