IP Library Granted Patent US 12,299,451
Granted Patent B2
US 12,299,451 · App. 17/897,016 · Granted May 13, 2025

Securing registers across security zones

Inventors: David P. Foley (Sugar Land, TX); Alexander Tessarolo (Lindfield, AU); Alan L. Davis (Sugar Land, TX)
Assignee: Texas Instruments Incorporated
G06F9/3851G06F9/30043G06F9/30054G06F9/30185
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 12,299,451
App. No.
17/897,016
Granted
May 13, 2025
Kind
B2
Abstract

In an example, a system includes a processor, where the processor includes a plurality of processor registers, and where the processor is configured to execute a first instruction in a first execution context. The processor is also configured to receive a PRESERVE instruction that indicates at least one processor register among the plurality of processor registers. The processor is configured to, responsive to the PRESERVE instruction, preserve parameters in the at least one processor register and clear other processor registers in the plurality of processor registers in the first execution context. The processor is also configured to execute a second instruction in a second execution context.

Claims (51)

1. A system, comprising:

a processor, wherein the processor includes a plurality of processor registers that includes a first processor register and a second processor register, and wherein the processor is configured to:

execute a first instruction in a first execution context, wherein the first instruction is associated with a transition to a second execution context;

receive a PRESERVE instruction that indicates the first processor register among the plurality of processor registers;

responsive to the PRESERVE instruction and the transition from the first execution context to the second execution context, preserve a value in the first processor register by clearing the second processor register without clearing the first processor register; and

execute a second instruction in the second execution context.

2. The system of claim 1 , wherein the processor includes a stack pointer register for each execution context.

3. The system of claim 1 , wherein the PRESERVE instruction includes one or more mask bits configured to specify at least one processor register to preserve from among the plurality of processor registers.

4. The system of claim 1 , wherein executing the second instruction includes executing the second instruction with the preserved value from the first processor register.

5. The system of claim 1 , wherein:

the first instruction is a protected call instruction; and

the PRESERVE instruction is part of the protected call instruction.

6. The system of claim 1 , wherein:

the PRESERVE instruction is a first PRESERVE instruction; and

the processor is further configured to:

receive a second PRESERVE instruction in the second execution context that specifies one or more of the first processor register or the second processor register;

responsive to the second PRESERVE instruction and a transition from the second execution context to the first execution context, preserve a value in the one or more of the first processor register or the second processor register specified by the second PRESERVE instruction without clearing the one or more of the first processor register or the second processor register; and

execute a third instruction in the first execution context.

7. The system of claim 1 , wherein the PRESERVE instruction is a 48-bit instruction.

8. The system of claim 1 , wherein:

the first instruction is a protected call instruction; and

the processor is configured to execute the PRESERVE instruction in parallel with the protected call instruction.

9. The system of claim 1 , wherein the plurality of processor registers has a set of address registers, a set of fixed-point registers, and a set of floating-point registers.

10. A method, comprising:

storing values in a plurality of processor registers that includes a first processor register and a second processor register;

executing a first instruction in a first execution context, wherein the first instruction is associated with a transition to a second execution context;

receiving a PRESERVE instruction that specifies the first processor register among the plurality of processor registers;

responsive to the PRESERVE instruction and the transition from the first execution context to the second execution context, preserving a value in the first processor register by clearing the second processor register without clearing the first processor register; and

executing a second instruction in the second execution context.

11. The method of claim 10 , wherein the PRESERVE instruction includes one or more mask bits configured to specify at least one processor register to preserve from among the plurality of processor registers.

12. The method of claim 10 , wherein executing the second instruction includes executing the second instruction with the preserved value from the first processor register.

13. The method of claim 10 , wherein:

the PRESERVE instruction is a first PRESERVE instruction; and

the method further comprises:

receiving a second PRESERVE instruction in the second execution context that specifies one or more of the first processor register or the second processor register;

responsive to the second PRESERVE instruction and a transition from the second execution context to the first execution context, preserving a value in the one or more of the first processor register or the second processor register specified by the second PRESERVE instruction without clearing the one or more of the first processor register or the second processor register; and

executing a third instruction in the first execution context.

14. The method of claim 10 , wherein:

the first instruction is a protected call instruction; and

the method further comprises executing the PRESERVE instruction in parallel with the protected call instruction.

15. The method of claim 10 , wherein the plurality of processor registers includes address registers and data registers.

16. The method of claim 10 , wherein the plurality of processor registers has a set of address registers, a set of fixed-point registers, and a set of floating-point registers.

17. A method, comprising:

receiving a protected call instruction in a first execution context, wherein the protected call instruction is associated with a transition to a second execution context;

preserving a value in a first processor register responsive to a PRESERVE instruction and the transition from the first execution context to the second execution context by clearing a second processor register without clearing the first processor register;

executing one or more functions in the second execution context;

receiving a protected return instruction in the second execution context; and

executing an instruction in the first execution context responsive to the protected return instruction.

18. The method of claim 17 , wherein the PRESERVE instruction includes one or more mask bits configured to specify at least one processor register to preserve from among a plurality of processor registers.

19. The method of claim 17 , wherein executing the one or more functions includes executing a function using the value in the first processor register.

20. The method of claim 17 wherein each of the first processor register and the second processor register is from a group consisting of an address register, a fixed-point register, and a floating-point register.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Aug 26, 2022
From: FOLEY, DAVID P.; TESSAROLO, ALEXANDER; DAVIS, ALAN L.
To: TEXAS INSTRUMENTS INCORPORATED
Reel/Frame 060917/0393 →
Continuity (1)
Related Publication 20240069920A1 · Feb 29, 2024
References Cited (21)
US 4445173A · Pilat · 1984 [cited by examiner]
US 4733346A · Tanaka · 1988 [cited by examiner]
US 4777588A · Case · 1988 [cited by examiner]
US 5210874A · Karger · 1993 [cited by examiner]
US 5321823A · Grundmann · 1994 [cited by examiner]
US 5414864A · Koizumi · 1995 [cited by examiner]
US 5682531A · Nakamura · 1997 [cited by examiner]
US 6199156B1 · Yoder · 2001 [cited by examiner]
US 6209085B1 · Hammond · 2001 [cited by examiner]
US 6970998B1 · Favor · 2005 [cited by examiner]
US 7640421B1 · Garlick · 2009 [cited by examiner]
US 8762692B2 · Schuchman · 2014 [cited by examiner]
US 10318302B2 · Tran · 2019 [cited by examiner]
US 20010049710A1 · Curey · 2001 [cited by examiner]
US 20040105298A1 · Symes · 2004 [cited by examiner]
US 20060075236A1 · Marek · 2006 [cited by examiner]
US 20060149940A1 · Mukherjee · 2006 [cited by examiner]
US 20080270772A1 · Inoue · 2008 [cited by examiner]
US 20090089564A1 · Brickell · 2009 [cited by examiner]
US 20140208301A1 · Guan · 2014 [cited by examiner]
US 20190065201A1 · Robinson · 2019 [cited by examiner]