#3015 closed task (fixed)

Add support for IBM PPC 750 chip

Reported by: phongvanpham Owned by: joel.sherrill@…
Priority: normal Milestone: 5.1
Component: arch/powerpc Version: 5
Severity: normal Keywords:
Cc: Blocked By:
Blocking:

Description

Currently MPC750 chip is supported. However, PPC750 (from IBM) is very close to MPC750 except minor differences. Enclosed is the delta to support PPC750.

Attachments (8)

cpuIdent.c (5.7 KB) - added by phongvanpham on 05/09/17 at 23:29:10.
Baseline of this version is 4.12
cpuIdent.c.orig (5.6 KB) - added by phongvanpham on 05/09/17 at 23:29:39.
This is the original file (before change) for diff'ing purposes to see code delta
cpuIdent.h (3.7 KB) - added by phongvanpham on 05/09/17 at 23:29:58.
Baseline of this version is 4.12
cpuIdent.h.orig (3.7 KB) - added by phongvanpham on 05/09/17 at 23:30:18.
This is the original file (before change) for diff'ing purposes to see code delta
ppc_exc_categories.c (11.0 KB) - added by phongvanpham on 05/09/17 at 23:30:38.
Baseline of this version is 4.12
ppc_exc_categories.c.orig (10.7 KB) - added by phongvanpham on 05/09/17 at 23:31:01.
This is the original file (before change) for diff'ing purposes to see code delta
0001-Add-support-for-IBM-PowerPC-750-chip.patch (3.3 KB) - added by phongvanpham on 05/12/17 at 18:39:29.
patch
0001-Reuse-mpc750-category-instead-of-creating-new-one-an.patch (1.6 KB) - added by phongvanpham on 05/26/17 at 00:05:14.
This is the patch to reuse mpc750 category table instead of creating one with ppc750

Download all attachments as: .zip

Change History (22)

Changed on 05/09/17 at 23:29:10 by phongvanpham

Attachment: cpuIdent.c added

Baseline of this version is 4.12

Changed on 05/09/17 at 23:29:39 by phongvanpham

Attachment: cpuIdent.c.orig added

This is the original file (before change) for diff'ing purposes to see code delta

Changed on 05/09/17 at 23:29:58 by phongvanpham

Attachment: cpuIdent.h added

Baseline of this version is 4.12

Changed on 05/09/17 at 23:30:18 by phongvanpham

Attachment: cpuIdent.h.orig added

This is the original file (before change) for diff'ing purposes to see code delta

Changed on 05/09/17 at 23:30:38 by phongvanpham

Attachment: ppc_exc_categories.c added

Baseline of this version is 4.12

Changed on 05/09/17 at 23:31:01 by phongvanpham

Attachment: ppc_exc_categories.c.orig added

This is the original file (before change) for diff'ing purposes to see code delta

comment:1 Changed on 05/11/17 at 07:31:02 by Sebastian Huber

Milestone: 4.124.12.0

comment:2 Changed on 05/12/17 at 05:16:56 by Sebastian Huber

Has the existing PPC 740 a performance monitor exception? Maybe use one category for both variants.

Changed on 05/12/17 at 18:39:29 by phongvanpham

patch

comment:3 in reply to:  2 Changed on 05/17/17 at 16:12:53 by phongvanpham

Replying to Sebastian Huber:

Has the existing PPC 740 a performance monitor exception? Maybe use one category for both variants.

Current ppc_booke_category_table (exception category for PPC 740) code does not have exception vector 0x1700 supported. Whether or not PPC 740 does have exception vector 0x1700 is unknown since I am not working on that chip nor do I have the datasheet for it. For IBM PowerPC750, exception 0x1700 is Thermal Management. ASM_60X_ITM_VECTOR is defined to be 0x17

comment:4 Changed on 05/17/17 at 16:25:08 by Joel Sherrill

I did a quick google and turned up this:

https://people.cs.clemson.edu/~mark/ppc750.pdf

Which has 740 and 750 in the title. It lists 0x1700 as Thermal Management and doesn't appear to distinguish 740 from 750.

One odd thought is whether there is an MPC740 which is different from the PPC740. Clearly from the "About This Book" section, they are nearly identical:

The primary objective of this user’s manual is to define the functionality of the PowerPC
750™ and PowerPC 740™ microprocessors for use by software and hardware developers.
Although the emphasis of this manual is upon the 750, unless otherwise noted, all
information here applies to 740. 

Maybe that reference helps.

comment:5 in reply to:  4 Changed on 05/17/17 at 16:33:34 by phongvanpham

Replying to Joel Sherrill:

I did a quick google and turned up this:

https://people.cs.clemson.edu/~mark/ppc750.pdf

Which has 740 and 750 in the title. It lists 0x1700 as Thermal Management and doesn't appear to distinguish 740 from 750.

One odd thought is whether there is an MPC740 which is different from the PPC740. Clearly from the "About This Book" section, they are nearly identical:

The primary objective of this user’s manual is to define the functionality of the PowerPC
750™ and PowerPC 740™ microprocessors for use by software and hardware developers.
Although the emphasis of this manual is upon the 750, unless otherwise noted, all
information here applies to 740. 

Maybe that reference helps.

Yes, that reference does help. Page 182 (where thermal exception management is described) states it is "750-specific".

comment:6 Changed on 05/22/17 at 17:16:07 by phongvanpham

Hi Developers,

What is your status on this ticket? Are you accepting the change and I am just waiting for the code to be merged to main line or you are rejecting the change or postponing it to another release at a TBD date?

If the variable names, etc. does not meet your standard, pls. change them to your liking.

comment:7 Changed on 05/23/17 at 10:09:30 by Sebastian Huber

Its still not clear to me why you cannot use the mpc_750_category_table for the IBM PPC750.

comment:8 Changed on 05/23/17 at 16:02:58 by phongvanpham

I copy & paste the two data structures for you convenience.

static const ppc_exc_categories mpc_750_category_table = {

PPC_BASIC_VECS,

[ASM_60X_SYSMGMT_VECTOR] = PPC_EXC_CLASSIC | PPC_EXC_ASYNC,
[ASM_60X_ADDR_VECTOR] = PPC_EXC_CLASSIC,
[ASM_60X_ITM_VECTOR] = PPC_EXC_CLASSIC,

};

static const ppc_exc_categories ppc_750_category_table = {

PPC_BASIC_VECS,

[ASM_60X_PERFMON_VECTOR] = PPC_EXC_CLASSIC,
[ASM_60X_SYSMGMT_VECTOR] = PPC_EXC_CLASSIC | PPC_EXC_ASYNC,
[ASM_60X_ADDR_VECTOR] = PPC_EXC_CLASSIC,
[ASM_60X_ITM_VECTOR] = PPC_EXC_CLASSIC,

};

There is 1 additional line in ppc_750 that is not in mpc750.

comment:9 in reply to:  7 ; Changed on 05/23/17 at 16:20:45 by phongvanpham

Replying to Sebastian Huber:

Its still not clear to me why you cannot use the mpc_750_category_table for the IBM PPC750.

Are you comfortable/Do you prefer that I add
[ASM_60X_PERFMON_VECTOR] = PPC_EXC_CLASSIC,

to mpc_750_category_table data structure? From the datasheet, it looks like this exception is missing but I only have access to PowerPC 750 chip so I can't verify anything for folks using MPC750.

comment:10 in reply to:  9 ; Changed on 05/24/17 at 05:19:38 by Sebastian Huber

Replying to phongvanpham:

Replying to Sebastian Huber:

Its still not clear to me why you cannot use the mpc_750_category_table for the IBM PPC750.

Are you comfortable/Do you prefer that I add
[ASM_60X_PERFMON_VECTOR] = PPC_EXC_CLASSIC,

to mpc_750_category_table data structure? From the datasheet, it looks like this exception is missing but I only have access to PowerPC 750 chip so I can't verify anything for folks using MPC750.

Yes, please add this to the mpc_750_category_table.

Changed on 05/26/17 at 00:05:14 by phongvanpham

This is the patch to reuse mpc750 category table instead of creating one with ppc750

comment:11 in reply to:  10 Changed on 05/26/17 at 00:06:48 by phongvanpham

Replying to Sebastian Huber:

Replying to phongvanpham:

Replying to Sebastian Huber:

Its still not clear to me why you cannot use the mpc_750_category_table for the IBM PPC750.

Are you comfortable/Do you prefer that I add
[ASM_60X_PERFMON_VECTOR] = PPC_EXC_CLASSIC,

to mpc_750_category_table data structure? From the datasheet, it looks like this exception is missing but I only have access to PowerPC 750 chip so I can't verify anything for folks using MPC750.

Yes, please add this to the mpc_750_category_table.

Just completed. See the additional patch attachment.

comment:12 Changed on 05/29/17 at 06:07:13 by Phong Pham <phamp@…>

Resolution: fixed
Status: newclosed

In 848007c/rtems:

Add support for IBM PowerPC 750 chip.

Closes #3015.

comment:13 Changed on 10/10/17 at 06:32:53 by Sebastian Huber

Component: libcpuarch/powerpc

comment:14 Changed on 11/09/17 at 06:27:14 by Sebastian Huber

Milestone: 4.12.05.1

Milestone renamed

Note: See TracTickets for help on using tickets.