1. A method of processing data with one or more data processing threads executing under control of a first operating system and one or more data processing threads executing under control of a second operating system, said method comprising the steps of: executing a first data processing thread under control of said first operating system; receiving a first interrupt operable to suspend execution of said first data processing thread at a first thread exit point and to trigger interrupt processing under control of said second operating system; executing interrupt handing code under control of said second operating system; generating a return interrupt; determining a return data processing thread to be executed under control of said first operating system; executing return interrupt handling code under control of said first operating system, said return interrupt handling code being operable such that: (i) if said return data processing thread is said first data processing thread, then said first data processing thread is resumed at said first thread exit point; and (ii) if said return data processing thread is a second data processing thread different from said first data processing thread, then a thread switching operation is performed under control of said first operating system to save context data associated with said first data processing thread at said first thread exit point such that said first data processing thread may later be resumed from said first thread exit point and to trigger execution of a second data processing thread under control of said first operating system.