Linux Audio

Check our new training course

Loading...
v4.10.11
 
  1/*
  2 *  PS3 bootwrapper hvcalls.
  3 *
  4 *  Copyright (C) 2007 Sony Computer Entertainment Inc.
  5 *  Copyright 2007 Sony Corp.
  6 *
  7 *  This program is free software; you can redistribute it and/or modify
  8 *  it under the terms of the GNU General Public License as published by
  9 *  the Free Software Foundation; version 2 of the License.
 10 *
 11 *  This program is distributed in the hope that it will be useful,
 12 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
 13 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 14 *  GNU General Public License for more details.
 15 *
 16 *  You should have received a copy of the GNU General Public License
 17 *  along with this program; if not, write to the Free Software
 18 *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
 19 */
 20
 21#include "ppc_asm.h"
 22
 23	.machine "ppc64"
 24
 25/*
 26 * The PS3 hypervisor uses a 64 bit "C" language calling convention.
 27 * The routines here marshal arguments between the 32 bit wrapper
 28 * program and the 64 bit hvcalls.
 29 *
 30 *  wrapper           lv1
 31 *  32-bit (h,l)      64-bit
 32 *
 33 *  1: r3,r4          <-> r3
 34 *  2: r5,r6          <-> r4
 35 *  3: r7,r8          <-> r5
 36 *  4: r9,r10         <-> r6
 37 *  5: 8(r1),12(r1)   <-> r7
 38 *  6: 16(r1),20(r1)  <-> r8
 39 *  7: 24(r1),28(r1)  <-> r9
 40 *  8: 32(r1),36(r1)  <-> r10
 41 *
 42 */
 43
 44.macro GLOBAL name
 45	.section ".text"
 46	.balign 4
 47	.globl \name
 48\name:
 49.endm
 50
 51.macro NO_SUPPORT name
 52	GLOBAL \name
 53	b ps3_no_support
 54.endm
 55
 56.macro HVCALL num
 57	li r11, \num
 58	.long 0x44000022
 59	extsw r3, r3
 60.endm
 61
 62.macro SAVE_LR offset=4
 63	mflr r0
 64	stw r0, \offset(r1)
 65.endm
 66
 67.macro LOAD_LR offset=4
 68	lwz r0, \offset(r1)
 69	mtlr r0
 70.endm
 71
 72.macro LOAD_64_REG target,high,low
 73	sldi r11, \high, 32
 74	or \target, r11, \low
 75.endm
 76
 77.macro LOAD_64_STACK target,offset
 78	ld \target, \offset(r1)
 79.endm
 80
 81.macro LOAD_R3
 82	LOAD_64_REG r3,r3,r4
 83.endm
 84
 85.macro LOAD_R4
 86	LOAD_64_REG r4,r5,r6
 87.endm
 88
 89.macro LOAD_R5
 90	LOAD_64_REG r5,r7,r8
 91.endm
 92
 93.macro LOAD_R6
 94	LOAD_64_REG r6,r9,r10
 95.endm
 96
 97.macro LOAD_R7
 98	LOAD_64_STACK r7,8
 99.endm
100
101.macro LOAD_R8
102	LOAD_64_STACK r8,16
103.endm
104
105.macro LOAD_R9
106	LOAD_64_STACK r9,24
107.endm
108
109.macro LOAD_R10
110	LOAD_64_STACK r10,32
111.endm
112
113.macro LOAD_REGS_0
114	stwu 1,-16(1)
115	stw 3, 8(1)
116.endm
117
118.macro LOAD_REGS_5
119	LOAD_R3
120	LOAD_R4
121	LOAD_R5
122	LOAD_R6
123	LOAD_R7
124.endm
125
126.macro LOAD_REGS_6
127	LOAD_REGS_5
128	LOAD_R8
129.endm
130
131.macro LOAD_REGS_8
132	LOAD_REGS_6
133	LOAD_R9
134	LOAD_R10
135.endm
136
137.macro STORE_REGS_0_1
138	lwz r11, 8(r1)
139	std r4, 0(r11)
140	mr r4, r3
141	li r3, 0
142	addi r1,r1,16
143.endm
144
145.macro STORE_REGS_5_2
146	lwz r11, 16(r1)
147	std r4, 0(r11)
148	lwz r11, 20(r1)
149	std r5, 0(r11)
150.endm
151
152.macro STORE_REGS_6_1
153	lwz r11, 24(r1)
154	std r4, 0(r11)
155.endm
156
157GLOBAL lv1_get_logical_ppe_id
158	SAVE_LR
159	LOAD_REGS_0
160	HVCALL 69
161	STORE_REGS_0_1
162	LOAD_LR
163	blr
164
165GLOBAL lv1_get_logical_partition_id
166	SAVE_LR
167	LOAD_REGS_0
168	HVCALL 74
169	STORE_REGS_0_1
170	LOAD_LR
171	blr
172
173GLOBAL lv1_get_repository_node_value
174	SAVE_LR
175	LOAD_REGS_5
176	HVCALL 91
177	STORE_REGS_5_2
178	LOAD_LR
179	blr
180
181GLOBAL lv1_panic
182	SAVE_LR
183	LOAD_REGS_8
184	HVCALL 255
185	LOAD_LR
186	blr
v6.8
  1/* SPDX-License-Identifier: GPL-2.0-only */
  2/*
  3 *  PS3 bootwrapper hvcalls.
  4 *
  5 *  Copyright (C) 2007 Sony Computer Entertainment Inc.
  6 *  Copyright 2007 Sony Corp.
 
 
 
 
 
 
 
 
 
 
 
 
 
  7 */
  8
  9#include "ppc_asm.h"
 10
 11	.machine "ppc64"
 12
 13/*
 14 * The PS3 hypervisor uses a 64 bit "C" language calling convention.
 15 * The routines here marshal arguments between the 32 bit wrapper
 16 * program and the 64 bit hvcalls.
 17 *
 18 *  wrapper           lv1
 19 *  32-bit (h,l)      64-bit
 20 *
 21 *  1: r3,r4          <-> r3
 22 *  2: r5,r6          <-> r4
 23 *  3: r7,r8          <-> r5
 24 *  4: r9,r10         <-> r6
 25 *  5: 8(r1),12(r1)   <-> r7
 26 *  6: 16(r1),20(r1)  <-> r8
 27 *  7: 24(r1),28(r1)  <-> r9
 28 *  8: 32(r1),36(r1)  <-> r10
 29 *
 30 */
 31
 32.macro GLOBAL name
 33	.section ".text"
 34	.balign 4
 35	.globl \name
 36\name:
 37.endm
 38
 39.macro NO_SUPPORT name
 40	GLOBAL \name
 41	b ps3_no_support
 42.endm
 43
 44.macro HVCALL num
 45	li r11, \num
 46	.long 0x44000022
 47	extsw r3, r3
 48.endm
 49
 50.macro SAVE_LR offset=4
 51	mflr r0
 52	stw r0, \offset(r1)
 53.endm
 54
 55.macro LOAD_LR offset=4
 56	lwz r0, \offset(r1)
 57	mtlr r0
 58.endm
 59
 60.macro LOAD_64_REG target,high,low
 61	sldi r11, \high, 32
 62	or \target, r11, \low
 63.endm
 64
 65.macro LOAD_64_STACK target,offset
 66	ld \target, \offset(r1)
 67.endm
 68
 69.macro LOAD_R3
 70	LOAD_64_REG r3,r3,r4
 71.endm
 72
 73.macro LOAD_R4
 74	LOAD_64_REG r4,r5,r6
 75.endm
 76
 77.macro LOAD_R5
 78	LOAD_64_REG r5,r7,r8
 79.endm
 80
 81.macro LOAD_R6
 82	LOAD_64_REG r6,r9,r10
 83.endm
 84
 85.macro LOAD_R7
 86	LOAD_64_STACK r7,8
 87.endm
 88
 89.macro LOAD_R8
 90	LOAD_64_STACK r8,16
 91.endm
 92
 93.macro LOAD_R9
 94	LOAD_64_STACK r9,24
 95.endm
 96
 97.macro LOAD_R10
 98	LOAD_64_STACK r10,32
 99.endm
100
101.macro LOAD_REGS_0
102	stwu 1,-16(1)
103	stw 3, 8(1)
104.endm
105
106.macro LOAD_REGS_5
107	LOAD_R3
108	LOAD_R4
109	LOAD_R5
110	LOAD_R6
111	LOAD_R7
112.endm
113
114.macro LOAD_REGS_6
115	LOAD_REGS_5
116	LOAD_R8
117.endm
118
119.macro LOAD_REGS_8
120	LOAD_REGS_6
121	LOAD_R9
122	LOAD_R10
123.endm
124
125.macro STORE_REGS_0_1
126	lwz r11, 8(r1)
127	std r4, 0(r11)
128	mr r4, r3
129	li r3, 0
130	addi r1,r1,16
131.endm
132
133.macro STORE_REGS_5_2
134	lwz r11, 16(r1)
135	std r4, 0(r11)
136	lwz r11, 20(r1)
137	std r5, 0(r11)
138.endm
139
140.macro STORE_REGS_6_1
141	lwz r11, 24(r1)
142	std r4, 0(r11)
143.endm
144
145GLOBAL lv1_get_logical_ppe_id
146	SAVE_LR
147	LOAD_REGS_0
148	HVCALL 69
149	STORE_REGS_0_1
150	LOAD_LR
151	blr
152
153GLOBAL lv1_get_logical_partition_id
154	SAVE_LR
155	LOAD_REGS_0
156	HVCALL 74
157	STORE_REGS_0_1
158	LOAD_LR
159	blr
160
161GLOBAL lv1_get_repository_node_value
162	SAVE_LR
163	LOAD_REGS_5
164	HVCALL 91
165	STORE_REGS_5_2
166	LOAD_LR
167	blr
168
169GLOBAL lv1_panic
170	SAVE_LR
171	LOAD_REGS_8
172	HVCALL 255
173	LOAD_LR
174	blr