Syntax:
int _ADAWI(short src, short *dest); int _ADAWI(short src, unsigned short *dest);
Branch_on_Bit_Clear-Clear_Interlocked
The _BBCCI function performs the following functions in interlocked
fashion:
o Returns the complement of the bit specified by the two arguments
o Clears the bit specified by the two arguments
Syntax:
int _BBCCI(int position, void *address);
Branch_on_Bit_Set-Set_Interlocked
The _BBSSI function performs the following functions in interlocked
fashion:
o Returns the status of the bit specified by the two arguments
o Sets the bit specified by the two arguments
Syntax:
int _BBSSI(int position, void *address);
Find_First_Clear_Bit
The _FFC function finds the position of the first clear bit in a
field. The bits are tested for clear status starting at bit 0 and
extending to highest bit in the field.
Syntax:
int _FFC(int start, char size, const void *base, int *position);
Find_First_Set_Bit
The _FFS function finds the position of the first set bit in a
field. The bits are tested for set status starting at bit 0 and
extending to the highest bit in the field.
Syntax:
int _FFS(int start, char size, const void *base, int *position);
Halt
The _HALT function halts the processor when executed by a process
running in kernel mode. This is a privileged function.
Syntax:
void _HALT(void);
Insert_Entry_into_Queue_at_Head_Interlocked
The _INSQHI function inserts an entry into the front of a queue in
an indivisible manner. This operation is interlocked against
similar operations by other processors or devices in the system.
Syntax:
int _INSQHI(void *new_entry, void *head);
Insert_Entry_into_Queue_at_Tail_Interlocked
The _INSQTI function inserts an entry at the end of a queue in an
indivisible manner. This operation is interlocked against similar
operations by other processors or devices in the system.
Syntax:
int _INSQTI(void *new_entry, void *head);
Insert_Entry_in_Queue
The _INSQUE function inserts a new entry into a queue following an
existing entry.
Syntax:
int _INSQUE(void *new_entry, void *predecessor);
Load_Process_Context
The _LDPCTX function restores the register and memory management
context. This is a privileged function.
Syntax:
void _LDPCTX(void);
Locate_Character
The _LOCC function locates the first character in a string matching
the target character.
Syntax:
int _LOCC(char target, short length, const char *string); int _LOCC(char target, short length, const char *string, char **position);
Move_from_Processor_Register
The _MFPR function returns the contents of a processor register.
This is a privileged function.
Syntax:
void _MFPR(int register_num, int *destination); void _MFPR(int register_num, unsigned int *destination);
Move_Character_3_Operand
The _MOVC3 function copies a block of memory. It is the preferred
way to copy a block of memory to a new location.
Syntax:
void _MOVC3(short length, const char *src, char *dest); void _MOVC3(short length, const char *src, char *dest, char **endsrc); void _MOVC3(short length, const char *src, char *dest, char **endsrc, char **enddest);
Move_Character_5_Operand
The _MOVC5 function allows the source string specified by the
pointer and length pair to be moved to the destination string
specified by the other pointer and length pair. If the source
string is smaller than the destination string, the destination
string is padded with the specified character.
Syntax:
void _MOVC5(short srclen, const char *src, char fill, short destlen, char *dest); void _MOVC5(short srclen, const char *src, char fill, short destlen, char *dest, short *unmoved_src); void _MOVC5(short srclen, const char *src, char fill, short destlen, char *dest, short *unmoved_src, char **endsrc); void _MOVC5(short srclen, const char *src, char fill, short destlen, char *dest, short *unmoved_src, char **endsrc, char **enddest);
Move_from_Processor_Status_Longword
The _MOVPSL function stores the value of the Processor Status
Longword (PSL).
Syntax:
void _MOVPSL(int *psl); void _MOVPSL(unsigned int *psl);
Move_to_Processor_Register
The _MTPR function loads a value into one of the special processor
registers. It is a privileged function.
Syntax:
int _MTPR(int src, int register_num);
Probe_Read_Accessibility
The _PROBER function checks to see if you can read the first and
last byte of the given address and length pair.
Syntax:
int _PROBER(char mode, short length, const void *address);
Probe_Write_Accessibility
The _PROBEW function checks the write accessibility of the first
and last byte of the given address and length pair.
Syntax:
int _PROBEW(char mode, short length, const void *address);
Read_General-Purpose_Register
The _READ_GPR function returns the value of a general-purpose
register.
Syntax:
int _READ_GPR(int register_number);
Remove_Entry_from_Queue_at_Head_Interlocked
The _REMQHI function removes the first entry from the queue in an
in an indivisible manner. This operation is interlocked against
similar operations by other processors or devices in the system.
Syntax:
int _REMQHI(void *head, void **removed_entry);
Remove_Entry_from_Queue_at_Tail_Interlocked
The _REMQTI function removes the last entry from the queue in an
indivisible manner. This operation is interlocked against similar
operations by other processors or devices in the system.
Syntax:
int _REMQTI(void *head, void **removed_entry);
Remove_Entry_from_Queue
The _REMQUE function removes an entry from a queue.
Syntax:
int _REMQUE(void *entry, void **removed_entry);
Scan_Characters
The _SCANC function locates the first character in a string with
the desired attributes. The attributes are specified through a
table and a mask.
Syntax:
int _SCANC(short length, const char *string, const char *table, char mask); int _SCANC(short length, const char *string, const char *table, char mask, char **match);
Simple_Read
The _SIMPLE_READ function reads I/O registers or shared memory. It
causes a MOVB, MOVW, or MOVL instruction to be generated that
cannot be moved or modified during optimization.
Syntax:
char _SIMPLE_READ(const char *source); short _SIMPLE_READ(const short *source); int _SIMPLE_READ(const int *source); long _SIMPLE_READ(const long *source);
Simple_Write
The _SIMPLE_WRITE function writes to I/O registers or shared
memory. It causes a MOVB, MOVW, or MOVL instruction to be
generated that cannot be moved or modified during optimization.
Syntax:
void _SIMPLE_WRITE(char value, char *dest); void _SIMPLE_WRITE(short value, short *dest); void _SIMPLE_WRITE(int value, int *dest); void _SIMPLE_WRITE(long value, long *dest);
Skip_Character
The _SKPC function locates the first character in a string that
does not match the target character.
Syntax:
int _SKPC(char target, short length, const char *string); int _SKPC(char target, short length, const char *string, char **position);
Span_Characters
The _SPANC function locates the first character in a string without
certain attributes. The attributes are specified through a table
and a mask.
Syntax:
int _SPANC(short length, const char *string, const char *table, char mask); int _SPANC(short length, const char *string, const char *table, char mask, char **position);
Save_Process_Context
The _SVPCTX function saves the context of a process. The
general-purpose registers are saved in the process control block
which is later used to resume a process. This function is
privileged.
Syntax:
void _SVPCTX(void);
Write_General_Purpose_Register
The _WRITE_GPR function loads a value into a specified
general-purpose register.
Syntax:
void _WRITE_GPR(int value, int register_number);