Like the PS3, Toshiba’s Celleb Cell implementation also makes use of a Hypervisor to limit access to system functionality.
Below is a table containing all known Celleb and PS3 HV calls (including undocumented calls). There are many calls with similar names and the same call number that appear to be supported on both architectures. There are also functions in one architecture that correspond to gaps in the other architecture’s HV, indicating functions that may have been left unimplemented. It could be possible that both HVs are derived from the same source (IBM reference implementation?).
| No. | Celleb HV Call | No. | PS3 HV Call |
|---|---|---|---|
| 0 | HV_allocate_memory | 0 | lv1_allocate_memory |
| 1 | lv1_write_htab_entry | ||
| 2 | HV_construct_virtual_address_space | 2 | lv1_construct_virtual_address_space |
| 3 | lv1_invalidate_htab_entries | ||
| 4 | HV_get_virtual_address_space_id_of_ppe | 4 | lv1_get_virtual_address_space_id_of_ppe |
| 5 | lv1_undocumented_function_5 | ||
| 6 | HV_query_logical_partition_address_region_info | 6 | lv1_query_logical_partition_address_region_info |
| 7 | HV_select_virtual_address_space | 7 | lv1_select_virtual_address_space |
| 8 | lv1_undocumented_function_8 | ||
| 9 | HV_pause | 9 | lv1_pause |
| 10 | HV_destruct_virtual_address_space | 10 | lv1_destruct_virtual_address_space |
| 11 | lv1_configure_irq_state_bitmap | ||
| 12 | lv1_connect_irq_plug_ext | ||
| 13 | HV_release_memory | 13 | lv1_release_memory |
| 14 | HV_get_io_address_translation_fault_info | ||
| 15 | HV_put_iopte | 15 | lv1_put_iopte (kboot) |
| 16 | HV_get_iopte | ||
| 17 | HV_preload_iopt_cache | 17 | lv1_disconnect_irq_plug_ext |
| 18 | HV_construct_event_receive_port | 18 | lv1_construct_event_receive_port |
| 19 | HV_destruct_event_receive_port | 19 | lv1_destruct_event_receive_port |
| 20 | HV_request_to_connect_event_ports | ||
| 21 | HV_connect_event_ports | ||
| 22 | HV_destruct_event_send_port | ||
| 23 | HV_send_event_externally | ||
| 24 | HV_send_event_locally | 24 | lv1_send_event_locally |
| 25 | HV_get_state_of_event_send_port | ||
| 26 | HV_detect_pending_interrupts | 26 | lv1_detect_pending_interrupts (kboot) |
| 27 | HV_end_of_interrupt | 27 | lv1_end_of_interrupt (kboot) |
| 28 | HV_construct_and_connect_irq_plug | 28 | lv1_connect_irq_plug (kboot) |
| 29 | HV_destruct_irq_plug | 29 | lv1_disconnect_irq_plug (kboot) |
| 30 | lv1_end_of_interrupt_ext | ||
| 31 | lv1_did_update_interrupt_mask | ||
| 32 | HV_send_message | ||
| 33 | HV_request_to_connect_message_ports | ||
| 34 | HV_get_message_port_info | ||
| 35 | HV_connect_message_ports | ||
| 36 | HV_destruct_message_port | ||
| 37 | HV_receive_message | ||
| 44 | HV_shutdown_logical_partition | 44 | lv1_shutdown_logical_partition (kboot) |
| 45 | HV_assign_control_signal_notification_port | ||
| 46 | HV_get_control_signal | ||
| 48 | HV_end_of_control_signal_processing | ||
| 49 | HV_request_to_attach_shared_memory | ||
| 50 | HV_permit_sharing_memory | ||
| 51 | HV_destruct_shared_memory_handle | ||
| 52 | HV_get_shared_memory_info | ||
| 53 | HV_construct_logical_spe | ||
| 54 | HV_destruct_logical_spe | 54 | lv1_destruct_logical_spe |
| 55 | HV_enable_logical_spe_execution | ||
| 56 | HV_disable_logical_spe_execution | ||
| 57 | lv1_construct_logical_spe | ||
| 58 | HV_sense_spe_execution_status | ||
| 61 | HV_set_irq_mask_for_spe | 61 | lv1_set_spe_interrupt_mask |
| 62 | lv1_undocumented_function_62 | ||
| 63 | lv1_undocumented_function_63 | ||
| 64 | lv1_set_spe_transition_notifier | ||
| 65 | lv1_disable_logical_spe | ||
| 66 | lv1_clear_spe_interrupt_status | ||
| 67 | lv1_get_spe_interrupt_status | ||
| 68 | HV_load_range_registers | ||
| 69 | HV_get_logical_ppe_id | 69 | lv1_get_logical_ppe_id |
| 70 | HV_set_ppe_l2cache_rmt_entry | ||
| 71 | HV_set_ppe_tlb_rmt_entry | ||
| 72 | HV_set_spe_tlb_rmt_entry | ||
| 73 | HV_set_interrupt_mask | 73 | lv1_set_interrupt_mask |
| 74 | HV_get_logical_partition_id | 74 | lv1_get_logical_partition_id |
| 75 | lv1_undocumented_function_75 | ||
| 77 | lv1_configure_execution_time_variable | ||
| 78 | lv1_get_spe_irq_outlet | ||
| 79 | lv1_set_spe_privilege_state_area_1_register | ||
| 80 | HV_construct_spe_irq_outlet | ||
| 81 | HV_destruct_spe_irq_outlet | ||
| 82 | HV_reinitialize_logical_spe | ||
| 84 | HV_request_ipspc_service | ||
| 85 | HV_permit_use_of_ipspc_service | ||
| 86 | HV_execute_ipspc_command | ||
| 87 | HV_stop_ipspc_command | ||
| 88 | HV_disconnect_ipspc_service | ||
| 89 | lv1_undocumented_function_89 | ||
| 90 | HV_create_repository_node | 90 | lv1_create_repository_node |
| 91 | HV_get_repository_node_value | 91 | lv1_get_repository_node_value |
| 92 | HV_modify_repository_node_value | 92 | lv1_modify_repository_node_value |
| 93 | HV_remove_repository_node | 93 | lv1_remove_repository_node |
| 94 | HV_write_htab_entry | ||
| 95 | HV_read_htab_entries | 95 | lv1_read_htab_entries |
| 96 | lv1_set_dabr | ||
| 97 | lv1_set_vmx_graphics_mode (kboot) | ||
| 98 | lv1_set_thread_switch_control_register (kboot) | ||
| 99 | lv1_undocumented_function_99 | ||
| 100 | HV_assign_io_address_translation_fault_port | ||
| 101 | HV_insert_htab_entry | ||
| 102 | lv1_undocumented_function_102 | ||
| 103 | lv1_get_total_execution_time | ||
| 104 | HV_cancel_shared_memory | ||
| 105 | lv1_undocumented_function_105 | ||
| 106 | lv1_undocumented_function_106 | ||
| 107 | lv1_undocumented_function_107 | ||
| 108 | lv1_undocumented_function_108 | ||
| 109 | lv1_undocumented_function_109 | ||
| 110 | lv1_undocumented_function_110 | ||
| 111 | lv1_undocumented_function_111 | ||
| 112 | lv1_undocumented_function_112 | ||
| 114 | lv1_undocumented_function_114 | ||
| 115 | lv1_undocumented_function_115 | ||
| 116 | lv1_allocate_io_segment (kboot) | ||
| 117 | lv1_release_io_segment (kboot) | ||
| 118 | lv1_allocate_ioid (kboot) | ||
| 119 | lv1_release_ioid (kboot) | ||
| 120 | lv1_construct_io_irq_outlet | ||
| 121 | lv1_destruct_io_irq_outlet | ||
| 122 | lv1_map_htab | ||
| 123 | lv1_unmap_htab | ||
| 124 | lv1_undocumented_function_124 | ||
| 125 | lv1_undocumented_function_125 | ||
| 126 | lv1_undocumented_function_126 | ||
| 127 | lv1_get_version_info | ||
| 134 | lv1_undocumented_function_134 | ||
| 135 | lv1_undocumented_function_135 | ||
| 136 | lv1_undocumented_function_136 | ||
| 137 | lv1_undocumented_function_137 | ||
| 138 | lv1_undocumented_function_138 | ||
| 140 | lv1_construct_lpm | ||
| 141 | lv1_destruct_lpm | ||
| 142 | lv1_start_lpm | ||
| 143 | lv1_stop_lpm | ||
| 144 | lv1_copy_lpm_trace_buffer | ||
| 145 | lv1_add_lpm_event_bookmark | ||
| 146 | lv1_delete_lpm_event_bookmark | ||
| 147 | lv1_set_lpm_interrupt_mask | ||
| 148 | lv1_get_lpm_interrupt_status | ||
| 149 | lv1_set_lpm_general_control | ||
| 150 | lv1_set_lpm_interval | ||
| 151 | lv1_set_lpm_trigger_control | ||
| 152 | lv1_set_lpm_counter_control | ||
| 153 | lv1_set_lpm_group_control | ||
| 154 | lv1_set_lpm_debug_bus_control | ||
| 155 | lv1_set_lpm_counter | ||
| 156 | lv1_set_lpm_signal | ||
| 157 | lv1_set_lpm_spr_trigger | ||
| 158 | lv1_insert_htab_entry | ||
| 162 | lv1_read_virtual_uart | ||
| 163 | lv1_write_virtual_uart | ||
| 164 | lv1_set_virtual_uart_param | ||
| 165 | lv1_get_virtual_uart_param | ||
| 166 | lv1_configure_virtual_uart_irq | ||
| 167 | lv1_undocumented_function_167 | ||
| 168 | lv1_undocumented_function_168 | ||
| 170 | lv1_open_device | ||
| 171 | lv1_close_device | ||
| 172 | lv1_map_device_mmio_region | ||
| 173 | lv1_unmap_device_mmio_region | ||
| 174 | lv1_allocate_device_dma_region | ||
| 175 | lv1_free_device_dma_region | ||
| 176 | lv1_map_device_dma_region | ||
| 177 | lv1_unmap_device_dma_region | ||
| 178 | lv1_read_pci_config (kboot) | ||
| 179 | lv1_write_pci_config (kboot) | ||
| 180 | lv1_read_pci_io (kboot) | ||
| 181 | lv1_write_pci_io (kboot) | ||
| 185 | lv1_net_add_multicast_address | ||
| 186 | lv1_net_remove_multicast_address | ||
| 187 | lv1_net_start_tx_dma | ||
| 188 | lv1_net_stop_tx_dma | ||
| 189 | lv1_net_start_rx_dma | ||
| 190 | lv1_net_stop_rx_dma | ||
| 191 | lv1_net_set_interrupt_status_indicator | ||
| 193 | lv1_net_set_interrupt_mask | ||
| 194 | lv1_net_control | ||
| 195 | lv1_undocumented_function_195 | ||
| 196 | lv1_undocumented_function_196 | ||
| 197 | lv1_connect_interrupt_event_receive_port | ||
| 198 | lv1_disconnect_interrupt_event_receive_port | ||
| 199 | lv1_get_spe_all_interrupt_statuses | ||
| 200 | lv1_undocumented_function_200 | ||
| 201 | lv1_undocumented_function_201 | ||
| 202 | lv1_deconfigure_virtual_uart_irq | ||
| 203 | HV_get_status_of_ipspc_service | ||
| 204 | HV_set_spe_privileged_state_1_registers | ||
| 205 | HV_get_interrupt_status_of_spe | ||
| 206 | HV_clear_interrupt_status_of_spe | ||
| 207 | lv1_enable_logical_spe | ||
| 208 | HV_get_spe_privileged_state_1_registers | ||
| 209 | lv1_undocumented_function_209 | ||
| 210 | lv1_gpu_open | ||
| 211 | lv1_gpu_close | ||
| 212 | lv1_gpu_device_map (kboot) | ||
| 213 | lv1_gpu_device_unmap (kboot) | ||
| 214 | lv1_gpu_memory_allocate | ||
| 216 | lv1_gpu_memory_free | ||
| 217 | lv1_gpu_context_allocate | ||
| 218 | lv1_gpu_context_free | ||
| 221 | lv1_gpu_context_iomap | ||
| 222 | lv1_undocumented_function_222 | ||
| 225 | lv1_gpu_context_attribute | ||
| 227 | lv1_gpu_context_intr | ||
| 228 | lv1_gpu_attribute (kboot) | ||
| 229 | lv1_undocumented_function_229 | ||
| 231 | lv1_undocumented_function_231 | ||
| 232 | lv1_get_rtc | ||
| 240 | lv1_set_ppe_periodic_tracer_frequency | ||
| 241 | lv1_start_ppe_periodic_tracer | ||
| 242 | lv1_stop_ppe_periodic_tracer | ||
| 243 | lv1_undocumented_function_243 | ||
| 244 | lv1_undocumented_function_244 | ||
| 245 | lv1_storage_read | ||
| 246 | lv1_storage_write | ||
| 247 | lv1_undocumented_function_247 | ||
| 248 | lv1_storage_send_device_command | ||
| 249 | lv1_storage_get_async_status | ||
| 250 | lv1_undocumented_function_250 | ||
| 251 | lv1_undocumented_function_251 | ||
| 252 | lv1_undocumented_function_252 | ||
| 253 | lv1_undocumented_function_253 | ||
| 254 | lv1_storage_check_async_status | ||
| 255 | lv1_panic |