IP Library › Granted Patent US 8,191,085
Granted Patent B2
US 8,191,085 · App. 11/467,988 · Granted May 29, 2012

Method and apparatus for loading or storing multiple registers in a data processing system

Assignee: Freescale Semiconductor, Inc.
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 8,191,085
App. No.
11/467,988
Granted
May 29, 2012
Kind
B2
Abstract

A method for operating a data processing system includes providing an application binary interface (ABI) which determines a set of non-contiguous volatile registers and a set of non-volatile registers. The set of non-contiguous volatile registers includes a plurality of general purpose registers (GPRs) and a plurality of special purpose registers (SPRs). The method includes providing less than three instructions which collectively load or store all of the set of non-contiguous volatile registers determined by the ABI. A system includes a set of volatile registers including a plurality of volatile GPRs, a plurality of volatile supervisor SPRs, and a plurality of volatile user SPRs, and execution circuitry for executing a first instruction that loads or stores the plurality of volatile supervisor SPRs, for executing a second instruction that loads or stores the plurality of volatile GPRs, and for executing a third instruction that loads or stores the plurality of volatile user SPRs.

Claims (28)

1. A method for operating a data processing system, the method comprising:

providing a set of non-contiguous volatile registers of the data processing system and a set of non-volatile registers of the data processing system, wherein each set is determined by an application binary interface, and wherein the set of non-contiguous volatile registers comprises a plurality of general purpose registers and a plurality of special purpose registers; and

providing less than three single instructions which, when executed by execution circuitry, collectively load or store all of the set of non-contiguous volatile registers determined by the application binary interface, wherein the set of non-contiguous volatile registers includes every volatile register defined by the application binary interface, wherein the collectively loading or storing of all of the set of non-contiguous volatile registers is performed in less than 3 single units of instruction execution.

2. A method as in claim 1 , wherein the load is from a stack and the store is to the stack.

3. A method as in claim 1 , wherein the less than three instructions comprises a first instruction for loading or storing at least one of the plurality of special purpose registers.

4. A method as in claim 3 , wherein the first instruction is executable when the data processing system is in either a supervisor mode or a user mode.

5. A method as in claim 1 , wherein the less than three instructions comprises a first instruction for loading or storing all non-contiguous volatile general purpose registers within the set of non-contiguous volatile registers.

6. A method as in claim 3 , wherein the first instruction comprises a field to optionally update a stack pointer.

7. A method for operating a data processing system, the method comprising:

providing a plurality of registers r 0 , r 1 , . . . rN, wherein the plurality of registers are contiguous in a programmer's model corresponding to the data processing system;

providing a single instruction; and

executing the single instruction by execution circuitry, the executing the single instruction results in loading or storing a subset of the plurality of registers, wherein the loading or storing of the subset of the plurality of registers is performed in a single unit of instruction execution,

wherein the subset of the plurality of registers is non-contiguous and includes every volatile general purpose register defined by an application binary interface;

and wherein which registers of the plurality of registers are part of the subset of the plurality of registers is specified in a maskless process.

8. A method as in claim 7 , wherein the single instruction comprises 32 bits and the plurality of registers comprises at least 32 registers.

9. A method as in claim 7 , wherein the subset of the plurality of registers comprises general purpose registers r 0 and r 3 -r 12 .

10. A method as in claim 7 , wherein the single instruction is interruptible.

11. A method as in claim 7 , wherein the loading is from a stack and the storing is to the stack.

12. A method as in claim 7 , wherein the single instruction comprises a field to optionally update a stack pointer.

13. A data processing system implemented at least partially in hardware, comprising:

a set of volatile registers comprising a plurality of volatile general purpose registers, a plurality of volatile supervisor special purpose registers, and a plurality of volatile user special purpose registers; and

execution circuitry for executing a first single instruction that loads or stores the plurality of supervisor special purpose registers, for executing a second single instruction that loads or stores the plurality of volatile general purpose registers, and for executing a third single instruction that loads or stores the plurality of volatile user special purpose registers, wherein:

the loading or storing the plurality of supervisor special purpose registers is performed in a single unit of instruction execution of the first single instruction,

the loading or storing the plurality of volatile general purpose registers is performed in a single unit of instruction execution of the second single instruction, and

the loading or storing of the plurality of volatile user special purpose registers is performed in a single unit of instruction execution of the third single instruction.

14. A method for operating a data processing system, the method comprising:

providing a set of volatile registers and a set of non-volatile registers, wherein each set is determined by an application binary interface, and wherein the set of volatile registers comprises a plurality of non-contiguous volatile general purpose registers; and

providing a first single instruction to execution circuitry which, when executed, stores the plurality of non-contiguous volatile general purpose registers, wherein the plurality of non-contiguous volatile general purpose registers includes every volatile general purpose register defined by the application binary interface, wherein the storing of the plurality of non-contiguous volatile general purpose registers is performed in a single unit of instruction execution.

Assignments (22)
CORRECTIVE ASSIGNMENT TO CORRECT THE REMOVE APPLICATION 11759915 AND REPLACE IT WITH APPLICATION 11759935 PREVIOUSLY RECORDED ON REEL 040925 FRAME 0001. ASSIGNOR(S) HEREBY CONFIRMS THE RELEASE OF SECURITY INTEREST. Recorded Feb 17, 2020
From: MORGAN STANLEY SENIOR FUNDING, INC.
To: NXP, B.V. F/K/A FREESCALE SEMICONDUCTOR, INC.
Reel/Frame 052917/0001 →
CORRECTIVE ASSIGNMENT TO CORRECT THE REMOVE APPLICATION 11759915 AND REPLACE IT WITH APPLICATION 11759935 PREVIOUSLY RECORDED ON REEL 040928 FRAME 0001. ASSIGNOR(S) HEREBY CONFIRMS THE RELEASE OF SECURITY INTEREST. Recorded Jan 17, 2020
From: MORGAN STANLEY SENIOR FUNDING, INC.
To: NXP B.V.
Reel/Frame 052915/0001 →
CORRECTIVE ASSIGNMENT TO CORRECT THE REMOVE APPLICATION 11759915 AND REPLACE IT WITH APPLICATION 11759935 PREVIOUSLY RECORDED ON REEL 037486 FRAME 0517. ASSIGNOR(S) HEREBY CONFIRMS THE ASSIGNMENT AND ASSUMPTION OF SECURITY INTEREST IN PATENTS. Recorded Dec 10, 2019
From: CITIBANK, N.A.
To: MORGAN STANLEY SENIOR FUNDING, INC.
Reel/Frame 053547/0421 →
RELEASE OF SECURITY INTEREST Recorded Sep 10, 2019
From: MORGAN STANLEY SENIOR FUNDING, INC.
To: NXP B.V.
Reel/Frame 050744/0097 →
CORRECTIVE ASSIGNMENT TO CORRECT THE TO CORRECT THE APPLICATION NO. FROM 13,883,290 TO 13,833,290 PREVIOUSLY RECORDED ON REEL 041703 FRAME 0536. ASSIGNOR(S) HEREBY CONFIRMS THE THE ASSIGNMENT AND ASSUMPTION OF SECURITY INTEREST IN PATENTS.. Recorded Feb 20, 2019
From: MORGAN STANLEY SENIOR FUNDING, INC.
To: SHENZHEN XINGUODU TECHNOLOGY CO., LTD.
Reel/Frame 048734/0001 →
CORRECTIVE ASSIGNMENT TO CORRECT THE NATURE OF CONVEYANCE PREVIOUSLY RECORDED AT REEL: 040632 FRAME: 0001. ASSIGNOR(S) HEREBY CONFIRMS THE MERGER AND CHANGE OF NAME. Recorded Sep 21, 2017
From: FREESCALE SEMICONDUCTOR INC.
To: NXP USA, INC.
Reel/Frame 044209/0047 →
CORRECTIVE ASSIGNMENT TO CORRECT THE REMOVE PATENTS 8108266 AND 8062324 AND REPLACE THEM WITH 6108266 AND 8060324 PREVIOUSLY RECORDED ON REEL 037518 FRAME 0292. ASSIGNOR(S) HEREBY CONFIRMS THE ASSIGNMENT AND ASSUMPTION OF SECURITY INTEREST IN PATENTS. Recorded Feb 1, 2017
From: CITIBANK, N.A.
To: MORGAN STANLEY SENIOR FUNDING, INC.
Reel/Frame 041703/0536 →
CHANGE OF NAME Recorded Nov 8, 2016
From: FREESCALE SEMICONDUCTOR, INC.
To: NXP USA, INC.
Reel/Frame 040632/0001 →
RELEASE OF SECURITY INTEREST Recorded Nov 7, 2016
From: MORGAN STANLEY SENIOR FUNDING, INC.
To: NXP B.V.
Reel/Frame 040928/0001 →
RELEASE OF SECURITY INTEREST Recorded Sep 21, 2016
From: MORGAN STANLEY SENIOR FUNDING, INC.
To: NXP, B.V., F/K/A FREESCALE SEMICONDUCTOR, INC.
Reel/Frame 040925/0001 →
SUPPLEMENT TO THE SECURITY AGREEMENT Recorded Jun 16, 2016
From: FREESCALE SEMICONDUCTOR, INC.
To: MORGAN STANLEY SENIOR FUNDING, INC.
Reel/Frame 039138/0001 →
ASSIGNMENT AND ASSUMPTION OF SECURITY INTEREST IN PATENTS Recorded Jan 13, 2016
From: CITIBANK, N.A.
To: MORGAN STANLEY SENIOR FUNDING, INC.
Reel/Frame 037518/0292 →
ASSIGNMENT AND ASSUMPTION OF SECURITY INTEREST IN PATENTS Recorded Jan 12, 2016
From: CITIBANK, N.A.
To: MORGAN STANLEY SENIOR FUNDING, INC.
Reel/Frame 037486/0517 →
PATENT RELEASE Recorded Dec 21, 2015
From: CITIBANK, N.A., AS COLLATERAL AGENT
To: FREESCALE SEMICONDUCTOR, INC.
Reel/Frame 037354/0225 →
PATENT RELEASE Recorded Dec 21, 2015
From: CITIBANK, N.A., AS COLLATERAL AGENT
To: FREESCALE SEMICONDUCTOR, INC.
Reel/Frame 037356/0553 →
PATENT RELEASE Recorded Dec 21, 2015
From: CITIBANK, N.A., AS COLLATERAL AGENT
To: FREESCALE SEMICONDUCTOR, INC.
Reel/Frame 037356/0143 →
SECURITY AGREEMENT Recorded Nov 6, 2013
From: FREESCALE SEMICONDUCTOR, INC.
To: CITIBANK, N.A., AS NOTES COLLATERAL AGENT
Reel/Frame 031591/0266 →
SECURITY AGREEMENT Recorded Jun 18, 2013
From: FREESCALE SEMICONDUCTOR, INC.
To: CITIBANK, N.A., AS NOTES COLLATERAL AGENT
Reel/Frame 030633/0424 →
SECURITY AGREEMENT Recorded May 13, 2010
From: FREESCALE SEMICONDUCTOR, INC.
To: CITIBANK, N.A., AS COLLATERAL AGENT
Reel/Frame 024397/0001 →
SECURITY AGREEMENT Recorded Mar 15, 2010
From: FREESCALE SEMICONDUCTOR, INC.
To: CITIBANK, N.A.
Reel/Frame 024085/0001 →
SECURITY AGREEMENT Recorded Feb 2, 2007
From: FREESCALE SEMICONDUCTOR, INC.; FREESCALE ACQUISITION CORPORATION; FREESCALE ACQUISITION HOLDINGS CORP.; FREESCALE HOLDINGS (BERMUDA) III, LTD.
To: CITIBANK, N.A. AS COLLATERAL AGENT
Reel/Frame 018855/0129 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Aug 29, 2006
From: MOYER, WILLIAM C.
To: FREESCALE SEMICONDUCTOR, INC.
Reel/Frame 018185/0056 →
Continuity (1)
Related Publication 20080126744A1 · May 29, 2008