IP Library › Granted Patent US 7,661,104
Granted Patent B2
US 7,661,104 · App. 10/714,482 · Granted Feb 9, 2010

Task following between multiple operating systems

Assignee: ARM Limited
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 7,661,104
App. No.
10/714,482
Granted
Feb 9, 2010
Kind
B2
Abstract

A processor may utilise two operating systems (Non-Secure, Secure) between which calls may be made. In order that a second operating system can track task switches made by a first operating system, each time a call is made to the second operating system, this call includes an identifier to enable discrimination between the task which was executing on the first operating system when that call was made. The identifier can be a call identifier and/or a target thread identifier and may include further parameters.

Claims (77)

1. A method of processing data with one or more data processing threads executing under control of a first operating system upon a processor and one or more data processing threads executing under control of a second operating system upon said processor, said method comprising the steps of:

executing a first data processing thread under control of said first operating system;

triggered by said first data processing thread, generating a call with said first operating system to said second operating system to trigger execution of a second data processing thread operating under control of said second operating system; wherein:

said call passed from said first operating system to said second operating system includes an identifier enabling discrimination by said second operating system between calls triggered by different data processing threads executing under control of said first operating system,

said first operating system executes in a non-secure domain and said second operating system executes in a secure domain,

a data processing thread executing in said domain has access to secure data which is not accessible to a data processing thread executing in said non-secure domain, and

said call is made using a software interrupt instruction and includes on or more parameters used by said second operating system.

2. A method as claimed in claim 1 , wherein when said first operating system switches threads whilst said call to said second operating system is pending, said call is reissued when a return is made to said first data processing thread by said first operating system.

3. A method as claimed in claim 1 , wherein said second operating system uses said identifier to reject said call if said call requires use of an exclusive resource that is already in use by a different data processing thread executing under control of said second operating system.

4. A method as claimed in claim 1 , wherein switches between processing under control of said first operating system and processing under control of said second operating system take place via a monitor mode of operation executing a monitor mode program.

5. A method as claimed in claim 1 , wherein said identifier includes a call identifier such that different data processing threads executing under control of said first operating system trigger calls have different call identifiers.

6. A method as claimed in claim 5 , wherein said call identifier is a call ID number.

7. A computer-readable storage medium storing a computer program operable to control a data processing apparatus in accordance with the method of claim 1 .

8. A method of processing data with one or more data processing threads executing under control of a first operating system upon a processor and one or more data processing threads executing under control of a second operating system upon said processor, said method comprising the steps of:

executing a first data processing thread under control of said first operating system;

triggered by said first data processing thread, generating a call with said first operating system to said second operating system to trigger execution of a second data processing thread operating under control of said second operating system; wherein:

said call passed from said first operating system to said second operating system includes an identifier enabling discrimination by said second operating system between calls triggered by different data processing threads executing under control of said first operating system,

said second operating system has a currently active data processing thread and uses said identifier to trigger a thread switch to said second data processing thread if said second data processing thread is not said currently active data processing thread,

said first operating system executes in a non-secure domain and said second operating system executes in a secure domain,

a data processing thread executing in said domain has access to secure data which is not accessible to a data processing thread executing in said non-secure domain, and

said call is made using a software interrupt instruction.

9. A method of processing data with one or more data processing threads executing under control of a first operating system upon a processor and one or more data processing threads executing under control of a second operating system upon said processor, said method comprising the steps of:

executing a first data processing thread under control of said first operating system;

triggered by said first data processing thread, generating a call with said first operating system to said second operating system to trigger execution of a second data processing thread operating under control of said second operating system; wherein:

said call passed from said first operating system to said second operating system includes an identifier enabling discrimination by said second operating system between calls triggered by different data processing threads executing under control of said first operating system,

said identifier includes a thread identifier directly identifying said first data processing thread,

said first operating system executes in a non-secure domain and said second operating system executes in a secure domain,

a data processing thread executing in said domain has access to secure data which is not accessible to a data processing thread executing in said non-secure domain, and

said call is made using a software interrupt instruction.

10. A method as claimed in claim 9 , wherein said thread identifier is a thread ID number.

11. A method of processing data with one or more data processing threads executing under control of a first operating system upon a processor and one or more data processing threads executing under control of a second operating system upon said processor, said method comprising the steps of:

executing a first data processing thread under control of said first operating system;

triggered by said first data processing thread, generating a call with said first operating system to said second operating system to trigger execution of a second data processing thread operating under control of said second operating system; wherein:

said call passed from said first operating system to said second operating system includes an identifier enabling discrimination by said second operating system between calls triggered by different data processing threads executing under control of said first operating system,

said call includes a target thread identifier identifying said second data processing thread,

said first operating system executes in a non-secure domain and said second operating system executes in a secure domain,

a data processing thread executing in said domain has access to secure data which is not accessible to a data processing thread executing in said non-secure domain, and

said call is made using a software interrupt instruction.

12. A method as claimed in claim 11 , wherein said target thread identifier is a thread ID number of said second data processing thread.

13. An apparatus for processing data with one or more data processing threads executing under control of a first operating system upon a processor and one or more data processing threads executing under control of a second operating system upon said processor, said apparatus comprising:

execution circuitry for executing a first data processing thread under control of said first operating system;

call generating circuitry configured when triggered by said first data processing thread to generate a call with said first operating system to said second operating system to trigger execution of a second data processing thread operating under control of said second operating system; wherein:

said call passed from said first operating system to said second operating system includes an identifier enabling discrimination by said second operating system between calls triggered by different data processing threads executing under control of said first operating system,

said first operating system executes in a non-secure domain and said second operating system executes in a secure domain,

a data processing thread executing in said domain has access to secure data which is not accessible to a data processing thread executing in said non-secure domain, and

said call is made using a software interrupt instruction and includes on or more parameters used by said second operating system.

14. Apparatus as claimed in claim 13 , wherein when said first operating system switches threads while said call to said second operating system is pending, the call generating circuitry is configured to reissue said call when a return is made to said first data processing thread by said first operating system.

15. Apparatus as claimed in claim 13 , wherein said second operating system uses said identifier to reject said call if said call requires use of an exclusive resource that is already in use by a different data processing thread executing under control of said second operating system.

16. Apparatus as claimed in claim 13 , wherein switches between processing under control of said first operating system and processing under control of said second operating system take place via a monitor mode of operation executing a monitor mode program.

17. Apparatus as claimed in claim 13 , wherein said identifier includes a call identifier such that different data processing threads executing under control of said first operating system trigger calls have different call identifiers.

18. Apparatus as claimed in claim 17 , wherein said call identifier is a call ID number.

19. An apparatus for processing data with one or more data processing threads executing under control of a first operating system upon a processor and one or more data processing threads executing under control of a second operating system upon said processor, said method comprising:

execution circuitry for executing a first data processing thread under control of said first operating system;

call generating circuitry configured when triggered by said first data processing thread to generate a call with said first operating system to said second operating system to trigger execution of a second data processing thread operating under control of said second operating system; wherein:

said call passed from said first operating system to said second operating system includes an identifier enabling discrimination by said second operating system between calls triggered by different data processing threads executing under control of said first operating system,

said second operating system has a currently active data processing thread and uses said identifier to trigger a thread switch to said second data processing thread if said second data processing thread is not said currently active data processing thread,

said first operating system executes in a non-secure domain and said second operating system executes in a secure domain,

a data processing thread executing in said domain has access to secure data which is not accessible to a data processing thread executing in said non-secure domain, and

said call is made using a software interrupt instruction.

20. An apparatus for processing data with one or more data processing threads executing under control of a first operating system upon a processor and one or more data processing threads executing under control of a second operating system upon said processor, said method comprising:

execution circuitry for executing a first data processing thread under control of said first operating system;

call generating circuitry configured when triggered by said first data processing thread to generate a call with said first operating system to said second operating system to trigger execution of a second data processing thread operating under control of said second operating system; wherein:

said call passed from said first operating system to said second operating system includes an identifier enabling discrimination by said second operating system between calls triggered by different data processing threads executing under control of said first operating system,

said identifier includes a thread identifier directly identifying said first data processing thread,

said first operating system executes in a non-secure domain and said second operating system executes in a secure domain,

a data processing thread executing in said domain has access to secure data which is not accessible to a data processing thread executing in said non-secure domain, and

said call is made using a software interrupt instruction.

21. Apparatus as claimed in claim 20 , wherein said thread identifier is a thread ID number.

22. An apparatus for processing data with one or more data processing threads executing under control of a first operating system upon a processor and one or more data processing threads executing under control of a second operating system upon said processor, said method comprising:

execution circuitry for executing a first data processing thread under control of said first operating system;

call generating circuitry configured when triggered by said first data processing thread to generate a call with said first operating system to said second operating system to trigger execution of a second data processing thread operating under control of said second operating system; wherein:

said call passed from said first operating system to said second operating system includes an identifier enabling discrimination by said second operating system between calls triggered by different data processing threads executing under control of said first operating system,

said call includes a target thread identifier identifying said second data processing thread,

said first operating system executes in a non-secure domain and said second operating system executes in a secure domain,

a data processing thread executing in said domain has access to secure data which is not accessible to a data processing thread executing in said non-secure domain, and

said call is made using a software interrupt instruction.

23. Apparatus as claimed in claim 22 , wherein said target thread identifier is a thread ID number of said second data processing thread.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Apr 15, 2004
From: WATT, SIMON CHARLES; BORNAN, CHRISTOPHER BENTLEY; ORION, LUC; CHAUSSADE, NICOLAS; BELNET, LIONEL; BROCHIER, STEPHANE ERIC SEBASTIEN; MANSELL, DAVID HENNAH; SYMES, DOMINIC HUGO
To: ARM LIMITED
Reel/Frame 015221/0575 →
Priority Claims (2)
GB 0226874.6 · Nov 18, 2002 · national
GB 0303449.3 · Feb 14, 2003 · national
Continuity (1)
Related Publication 20090320048A1 · Dec 24, 2009