summaryrefslogtreecommitdiffstats
path: root/sys/powerpc/ps3/ps3-hvcall.master
blob: a9abe9455a6885a28481be7e84076439046ab155 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
/*
 * Playstation 3 LV1 hypercall interface
 *
 * $FreeBSD$
 */

#include <sys/types.h>

enum lpar_id {
	PS3_LPAR_ID_CURRENT	= 0x00,
	PS3_LPAR_ID_PME		= 0x01,
};

/* Return codes from hypercalls */
#define LV1_SUCCESS			0
#define LV1_RESOURCE_SHORTAGE		-2
#define LV1_NO_PRIVILEGE		-3
#define LV1_DENIED_BY_POLICY		-4
#define LV1_ACCESS_VIOLATION		-5
#define LV1_NO_ENTRY			-6
#define LV1_DUPLICATE_ENTRY		-7
#define LV1_TYPE_MISMATCH		-8
#define LV1_BUSY			-9
#define LV1_EMPTY			-10
#define LV1_WRONG_STATE			-11
#define LV1_NO_MATCH			-13
#define LV1_ALREADY_CONNECTED		-14
#define LV1_UNSUPPORTED_PARAMETER_VALUE	-15
#define LV1_CONDITION_NOT_SATISFIED	-16
#define LV1_ILLEGAL_PARAMETER_VALUE	-17
#define LV1_BAD_OPTION			-18
#define LV1_IMPLEMENTATION_LIMITATION	-19
#define LV1_NOT_IMPLEMENTED		-20
#define LV1_INVALID_CLASS_ID		-21
#define LV1_CONSTRAINT_NOT_SATISFIED	-22
#define LV1_ALIGNMENT_ERROR		-23
#define LV1_HARDWARE_ERROR		-24
#define LV1_INVALID_DATA_FORMAT		-25
#define LV1_INVALID_OPERATION		-26
#define LV1_INTERNAL_ERROR		-32768

static inline uint64_t
lv1_repository_string(const char *str)
{
	uint64_t ret = 0;
	strncpy((char *)&ret, str, sizeof(ret));
	return (ret);
}

#	Code	Name					Inputs				Outputs
HVCALL	0	lv1_allocate_memory			size,log_page_size,zero,flags	base_addr,muid
HVCALL	1	lv1_write_htab_entry			vas_id,slot,pte_hi,pte_lo
HVCALL	2	lv1_construct_virtual_address_space	log_pteg_count,n_sizes,page_sizes vas_id,hv_pteg_count
HVCALL	4	lv1_get_virtual_address_space_id_of_ppe	ppe_id				vas_id
HVCALL	6	lv1_query_logical_partition_address_region_info	lpar_id			base_addr,size,access_right,max_page_size,flags
HVCALL	7	lv1_select_virtual_address_space	vas_id
HVCALL	9	lv1_pause				mode
HVCALL	10	lv1_destruct_virtual_address_space	vas_id
HVCALL	11	lv1_configure_irq_state_bitmap		ppe_id,cpu_id,bitmap_addr
HVCALL	12	lv1_connect_irq_plug_ext		ppe_id,cpu_id,virq,outlet,zero
HVCALL	13	lv1_release_memory			base_addr
HVCALL	15	lv1_put_iopte				ioas_id,ioif_addr,lpar_addr,io_id,flags
HVCALL	17	lv1_disconnect_irq_plug_ext		ppe_id,cpu_id,virq
HVCALL	18	lv1_construct_event_receive_port	UNUSED				outlet
HVCALL	19	lv1_destruct_event_receive_port		outlet
HVCALL	24	lv1_send_event_locally			outlet
HVCALL	27	lv1_end_of_interrupt			irq
HVCALL	28	lv1_connect_irq_plug			virq,irq
HVCALL	29	lv1_disconnect_irq_plus			virq
HVCALL	30	lv1_end_of_interrupt_ext		ppe_id,cpu_id,virq
HVCALL	31	lv1_did_update_interrupt_mask		ppe_id,cpu_id
HVCALL	44	lv1_shutdown_logical_partition		cmd
HVCALL	54	lv1_destruct_logical_spe		spe_id
HVCALL	57	lv1_construct_logical_spe		pshift1,pshift2,pshift3,pshift4,pshift5,vas_id,spe_type	priv2_addr,problem_phys,local_store_phys,unused,shadow_addr,spe_id
HVCALL	61	lv1_set_spe_interrupt_mask		spe_id,class,mask
HVCALL	65	lv1_disable_logical_spe			spe_id,zero
HVCALL	66	lv1_clear_spe_interrupt_status		spe_id,class,stat,zero
HVCALL	67	lv1_get_spe_interrupt_status		spe_id,class			stat
HVCALL	69	lv1_get_logical_ppe_id			UNUSED				ppe_id
HVCALL	74	lv1_get_logical_partition_id		UNUSED				lpar_id
HVCALL	78	lv1_get_spe_irq_outlet			spe_id,class			outlet
HVCALL	79	lv1_set_spe_privilege_state_area_1_register	spe_id,offset,value
HVCALL	91	lv1_get_repository_node_value		lpar_id,n1,n2,n3,n4		v1,v2
HVCALL	95	lv1_read_htab_entries			vas_id,slot	hi1,hi2,hi3,hi4,rcbits
HVCALL	96	lv1_set_dabr				dabr,flags
HVCALL	116	lv1_allocate_io_segment			ioas_id,seg_size,io_pagesize	ioif_addr
HVCALL	117	lv1_release_io_segment			ioas_id,ioif_addr
HVCALL	120	lv1_construct_io_irq_outlet		interrupt_id			outlet
HVCALL	121	lv1_destruct_io_irq_outlet		outlet
HVCALL	122	lv1_map_htab				lpar_id				htab_addr
HVCALL	123	lv1_unmap_htab				htab_addr
HVCALL	127	lv1_get_version_info			UNUSED				firm_vers
HVCALL	158	lv1_insert_htab_entry			vas_id,pteg,pte_hi,pte_lo,lockflags,flags	index,evicted_hi,evicted_lo
HVCALL	162	lv1_read_virtual_uart			port,buffer,bytes		bytes_read
HVCALL	163	lv1_write_virtual_uart			port,buffer,bytes		bytes_written
HVCALL	164	lv1_set_virtual_uart_param		port,param,value
HVCALL	165	lv1_get_virtual_uart_param		port,param			value
HVCALL	166	lv1_configure_virtual_uart		lpar_addr			outlet
HVCALL	170	lv1_open_device				bus,dev,zero
HVCALL	171	lv1_close_device			bus,dev
HVCALL	172	lv1_map_device_mmio_region		bus,dev,bus_addr,size,page_size	lpar_addr
HVCALL	173	lv1_unmap_device_mmio_region		bus,dev,lpar_addr
HVCALL	174	lv1_allocate_device_dma_region		bus,dev,io_size,io_pagesize,flag	dma_region
HVCALL	175	lv1_free_device_dma_region		bus,dev,dma_region
HVCALL	176	lv1_map_device_dma_region		bus,dev,lpar_addr,dma_region,size,flags
HVCALL	177	lv1_unmap_device_dma_region		bus,dev,dma_region,size
HVCALL	178	lv1_read_pci_config			ps3bus,bus,dev,func,offset,size	result
HVCALL	179	lv1_write_pci_config			ps3bus,bus,dev,func,offset,size,data
HVCALL	185	lv1_net_add_multicast_address		bus,dev,addr,flags
HVCALL	186	lv1_net_remove_multicast_address	bus,dev,zero,one
HVCALL	187	lv1_net_start_tx_dma			bus,dev,bus_addr,zero
HVCALL	188	lv1_net_stop_tx_dma			bus,dev,zero
HVCALL	189	lv1_net_start_rx_dma			bus,dev,bus_addr,zero
HVCALL	190	lv1_net_stop_rx_dma			bus,dev,zero
HVCALL	191	lv1_net_set_interrupt_status_indicator	bus,dev,irq_status_addr,zero
HVCALL	193	lv1_net_set_interrupt_mask		bus,dev,mask,zero
HVCALL	194	lv1_net_control				bus,dev,p1,p2,p3,p4		v1,v2
HVCALL	197	lv1_connect_interrupt_event_receive_port	bus,dev,outlet,irq
HVCALL	198	lv1_disconnect_interrupt_event_receive_port	bus,dev,outlet,irq
HVCALL	202	lv1_deconfigure_virtual_uart_irq
HVCALL	207	lv1_enable_logical_spe			spe_id,resource_id
HVCALL	210	lv1_gpu_open				zero
HVCALL	211	lv1_gpu_close
HVCALL	212	lv1_gpu_device_map			dev				lpar_addr,lpar_size
HVCALL	213	lv1_gpu_device_unmap			dev
HVCALL	214	lv1_gpu_memory_allocate			ddr_size,zero1,zero2,zero3,zero4	handle,ddr_lpar
HVCALL	216	lv1_gpu_memory_free			handle
HVCALL	217	lv1_gpu_context_allocate		handle, zero			chandle,lpar_dma_control,lpar_driver_info,lpar_reports,lpar_reports_size
HVCALL	218	lv1_gpu_context_free			chandle
HVCALL	221	lv1_gpu_context_iomap			changle,gpu_ioif,xdr_lpar,fbsize,ioflags
HVCALL	225	lv1_gpu_context_attribute		chandle,op,p1,p2,p3,p4
HVCALL	227	lv1_gpu_context_intr			chandle				v1
HVCALL	232	lv1_get_rtc				UNUSED				rtc_val,timebase
HVCALL	245	lv1_storage_read			dev,region,sector,nsectors,flags,buf	dma_tag
HVCALL	246	lv1_storage_write			dev,region,sector,nsectors,flags,buf	dma_tag
HVCALL	248	lv1_storage_send_device_command		dev,cmd_id,cmd_block,cmd_size,data_buf,blocks	dma_tag
HVCALL	249	lv1_storage_get_async_status		dev				dma_tag,status
HVCALL	254	lv1_storage_check_async_status		dev,dma_tag			status
HVCALL	255	lv1_panic				howto
OpenPOWER on IntegriCloud