06.08.2013 Views

pSOSystem System Calls - Read

pSOSystem System Calls - Read

pSOSystem System Calls - Read

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

pSOS+ <strong>System</strong> <strong>Calls</strong> i_enter<br />

i_enter Enters into an interrupt service routine.<br />

This function cannot be called from a high-level language.<br />

Description<br />

Target<br />

Return Value<br />

Notes<br />

This pSOS+ service entry is available only on x86, ColdFire, and PowerPC<br />

processors. On these processors, i_enter() provides and establishes a standard<br />

entrance convention for all interrupt service routines (ISRs). For efficiency reasons,<br />

i_enter() is different from other system calls in that it uses a separate entry into<br />

the pSOS+ kernel.<br />

Entering the ISR<br />

CF<br />

PPC<br />

x86<br />

For more information, please refer to the examples given in the i_return() call<br />

description on page 1-35.<br />

None.<br />

On ColdFire processors, i_enter() must be called at the beginning of<br />

an ISR so that pSOS+ can keep track of nested interrupts and can<br />

switch stacks if an interrupt stack is being used. i_enter() is called<br />

via TRAP #12.<br />

On PowerPC processors, i_enter() must be called at the beginning of<br />

an ISR before the interrupt is re-enabled. The i_enter() entry point is<br />

located at offset 0x60 from the beginning of the pSOS+ kernel code. It’s<br />

called with a call (bl) instruction.<br />

On x86 processors, i_enter() must be used as the first instruction of<br />

an ISR, so that pSOS+ can keep track of nested interrupts and can<br />

switch stacks if an interrupt stack is being used. i_enter() is called<br />

via INT 92H.<br />

i_return() must be used to exit an ISR.<br />

<strong>pSO<strong>System</strong></strong> <strong>System</strong> <strong>Calls</strong> 1-33<br />

1

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!