spapr-rtas: replace return code constants with macros
Signed-off-by: Alexey Kardashevskiy <aik@ozlabs.ru> Signed-off-by: Alexander Graf <agraf@suse.de>
This commit is contained in:
		
							parent
							
								
									b650d6a2fc
								
							
						
					
					
						commit
						a64d325df1
					
				| @ -723,7 +723,7 @@ static void rtas_set_xive(PowerPCCPU *cpu, sPAPREnvironment *spapr, | ||||
|     uint32_t nr, server, priority; | ||||
| 
 | ||||
|     if ((nargs != 3) || (nret != 1)) { | ||||
|         rtas_st(rets, 0, -3); | ||||
|         rtas_st(rets, 0, RTAS_OUT_PARAM_ERROR); | ||||
|         return; | ||||
|     } | ||||
| 
 | ||||
| @ -733,13 +733,13 @@ static void rtas_set_xive(PowerPCCPU *cpu, sPAPREnvironment *spapr, | ||||
| 
 | ||||
|     if (!ics_valid_irq(ics, nr) || (server >= ics->icp->nr_servers) | ||||
|         || (priority > 0xff)) { | ||||
|         rtas_st(rets, 0, -3); | ||||
|         rtas_st(rets, 0, RTAS_OUT_PARAM_ERROR); | ||||
|         return; | ||||
|     } | ||||
| 
 | ||||
|     ics_write_xive(ics, nr, server, priority, priority); | ||||
| 
 | ||||
|     rtas_st(rets, 0, 0); /* Success */ | ||||
|     rtas_st(rets, 0, RTAS_OUT_SUCCESS); | ||||
| } | ||||
| 
 | ||||
| static void rtas_get_xive(PowerPCCPU *cpu, sPAPREnvironment *spapr, | ||||
| @ -751,18 +751,18 @@ static void rtas_get_xive(PowerPCCPU *cpu, sPAPREnvironment *spapr, | ||||
|     uint32_t nr; | ||||
| 
 | ||||
|     if ((nargs != 1) || (nret != 3)) { | ||||
|         rtas_st(rets, 0, -3); | ||||
|         rtas_st(rets, 0, RTAS_OUT_PARAM_ERROR); | ||||
|         return; | ||||
|     } | ||||
| 
 | ||||
|     nr = rtas_ld(args, 0); | ||||
| 
 | ||||
|     if (!ics_valid_irq(ics, nr)) { | ||||
|         rtas_st(rets, 0, -3); | ||||
|         rtas_st(rets, 0, RTAS_OUT_PARAM_ERROR); | ||||
|         return; | ||||
|     } | ||||
| 
 | ||||
|     rtas_st(rets, 0, 0); /* Success */ | ||||
|     rtas_st(rets, 0, RTAS_OUT_SUCCESS); | ||||
|     rtas_st(rets, 1, ics->irqs[nr - ics->offset].server); | ||||
|     rtas_st(rets, 2, ics->irqs[nr - ics->offset].priority); | ||||
| } | ||||
| @ -776,21 +776,21 @@ static void rtas_int_off(PowerPCCPU *cpu, sPAPREnvironment *spapr, | ||||
|     uint32_t nr; | ||||
| 
 | ||||
|     if ((nargs != 1) || (nret != 1)) { | ||||
|         rtas_st(rets, 0, -3); | ||||
|         rtas_st(rets, 0, RTAS_OUT_PARAM_ERROR); | ||||
|         return; | ||||
|     } | ||||
| 
 | ||||
|     nr = rtas_ld(args, 0); | ||||
| 
 | ||||
|     if (!ics_valid_irq(ics, nr)) { | ||||
|         rtas_st(rets, 0, -3); | ||||
|         rtas_st(rets, 0, RTAS_OUT_PARAM_ERROR); | ||||
|         return; | ||||
|     } | ||||
| 
 | ||||
|     ics_write_xive(ics, nr, ics->irqs[nr - ics->offset].server, 0xff, | ||||
|                    ics->irqs[nr - ics->offset].priority); | ||||
| 
 | ||||
|     rtas_st(rets, 0, 0); /* Success */ | ||||
|     rtas_st(rets, 0, RTAS_OUT_SUCCESS); | ||||
| } | ||||
| 
 | ||||
| static void rtas_int_on(PowerPCCPU *cpu, sPAPREnvironment *spapr, | ||||
| @ -802,14 +802,14 @@ static void rtas_int_on(PowerPCCPU *cpu, sPAPREnvironment *spapr, | ||||
|     uint32_t nr; | ||||
| 
 | ||||
|     if ((nargs != 1) || (nret != 1)) { | ||||
|         rtas_st(rets, 0, -3); | ||||
|         rtas_st(rets, 0, RTAS_OUT_PARAM_ERROR); | ||||
|         return; | ||||
|     } | ||||
| 
 | ||||
|     nr = rtas_ld(args, 0); | ||||
| 
 | ||||
|     if (!ics_valid_irq(ics, nr)) { | ||||
|         rtas_st(rets, 0, -3); | ||||
|         rtas_st(rets, 0, RTAS_OUT_PARAM_ERROR); | ||||
|         return; | ||||
|     } | ||||
| 
 | ||||
| @ -817,7 +817,7 @@ static void rtas_int_on(PowerPCCPU *cpu, sPAPREnvironment *spapr, | ||||
|                    ics->irqs[nr - ics->offset].saved_priority, | ||||
|                    ics->irqs[nr - ics->offset].saved_priority); | ||||
| 
 | ||||
|     rtas_st(rets, 0, 0); /* Success */ | ||||
|     rtas_st(rets, 0, RTAS_OUT_SUCCESS); | ||||
| } | ||||
| 
 | ||||
| /*
 | ||||
|  | ||||
| @ -55,12 +55,12 @@ static void rtas_nvram_fetch(PowerPCCPU *cpu, sPAPREnvironment *spapr, | ||||
|     void *membuf; | ||||
| 
 | ||||
|     if ((nargs != 3) || (nret != 2)) { | ||||
|         rtas_st(rets, 0, -3); | ||||
|         rtas_st(rets, 0, RTAS_OUT_PARAM_ERROR); | ||||
|         return; | ||||
|     } | ||||
| 
 | ||||
|     if (!nvram) { | ||||
|         rtas_st(rets, 0, -1); | ||||
|         rtas_st(rets, 0, RTAS_OUT_HW_ERROR); | ||||
|         rtas_st(rets, 1, 0); | ||||
|         return; | ||||
|     } | ||||
| @ -71,7 +71,7 @@ static void rtas_nvram_fetch(PowerPCCPU *cpu, sPAPREnvironment *spapr, | ||||
| 
 | ||||
|     if (((offset + len) < offset) | ||||
|         || ((offset + len) > nvram->size)) { | ||||
|         rtas_st(rets, 0, -3); | ||||
|         rtas_st(rets, 0, RTAS_OUT_PARAM_ERROR); | ||||
|         rtas_st(rets, 1, 0); | ||||
|         return; | ||||
|     } | ||||
| @ -87,7 +87,7 @@ static void rtas_nvram_fetch(PowerPCCPU *cpu, sPAPREnvironment *spapr, | ||||
|     } | ||||
|     cpu_physical_memory_unmap(membuf, len, 1, len); | ||||
| 
 | ||||
|     rtas_st(rets, 0, (alen < len) ? -1 : 0); | ||||
|     rtas_st(rets, 0, (alen < len) ? RTAS_OUT_HW_ERROR : RTAS_OUT_SUCCESS); | ||||
|     rtas_st(rets, 1, (alen < 0) ? 0 : alen); | ||||
| } | ||||
| 
 | ||||
| @ -102,12 +102,12 @@ static void rtas_nvram_store(PowerPCCPU *cpu, sPAPREnvironment *spapr, | ||||
|     void *membuf; | ||||
| 
 | ||||
|     if ((nargs != 3) || (nret != 2)) { | ||||
|         rtas_st(rets, 0, -3); | ||||
|         rtas_st(rets, 0, RTAS_OUT_PARAM_ERROR); | ||||
|         return; | ||||
|     } | ||||
| 
 | ||||
|     if (!nvram) { | ||||
|         rtas_st(rets, 0, -1); | ||||
|         rtas_st(rets, 0, RTAS_OUT_HW_ERROR); | ||||
|         return; | ||||
|     } | ||||
| 
 | ||||
| @ -117,7 +117,7 @@ static void rtas_nvram_store(PowerPCCPU *cpu, sPAPREnvironment *spapr, | ||||
| 
 | ||||
|     if (((offset + len) < offset) | ||||
|         || ((offset + len) > nvram->size)) { | ||||
|         rtas_st(rets, 0, -3); | ||||
|         rtas_st(rets, 0, RTAS_OUT_PARAM_ERROR); | ||||
|         return; | ||||
|     } | ||||
| 
 | ||||
| @ -132,7 +132,7 @@ static void rtas_nvram_store(PowerPCCPU *cpu, sPAPREnvironment *spapr, | ||||
|     } | ||||
|     cpu_physical_memory_unmap(membuf, len, 0, len); | ||||
| 
 | ||||
|     rtas_st(rets, 0, (alen < len) ? -1 : 0); | ||||
|     rtas_st(rets, 0, (alen < len) ? RTAS_OUT_HW_ERROR : RTAS_OUT_SUCCESS); | ||||
|     rtas_st(rets, 1, (alen < 0) ? 0 : alen); | ||||
| } | ||||
| 
 | ||||
|  | ||||
| @ -286,7 +286,7 @@ static void check_exception(PowerPCCPU *cpu, sPAPREnvironment *spapr, | ||||
|     uint64_t xinfo; | ||||
| 
 | ||||
|     if ((nargs < 6) || (nargs > 7) || nret != 1) { | ||||
|         rtas_st(rets, 0, -3); | ||||
|         rtas_st(rets, 0, RTAS_OUT_PARAM_ERROR); | ||||
|         return; | ||||
|     } | ||||
| 
 | ||||
| @ -306,9 +306,9 @@ static void check_exception(PowerPCCPU *cpu, sPAPREnvironment *spapr, | ||||
|         cpu_physical_memory_write(buf, pending_epow, len); | ||||
|         g_free(pending_epow); | ||||
|         pending_epow = NULL; | ||||
|         rtas_st(rets, 0, 0); | ||||
|         rtas_st(rets, 0, RTAS_OUT_SUCCESS); | ||||
|     } else { | ||||
|         rtas_st(rets, 0, 1); | ||||
|         rtas_st(rets, 0, RTAS_OUT_NO_ERRORS_FOUND); | ||||
|     } | ||||
| } | ||||
| 
 | ||||
|  | ||||
| @ -90,7 +90,7 @@ static void finish_read_pci_config(sPAPREnvironment *spapr, uint64_t buid, | ||||
| 
 | ||||
|     if ((size != 1) && (size != 2) && (size != 4)) { | ||||
|         /* access must be 1, 2 or 4 bytes */ | ||||
|         rtas_st(rets, 0, -1); | ||||
|         rtas_st(rets, 0, RTAS_OUT_HW_ERROR); | ||||
|         return; | ||||
|     } | ||||
| 
 | ||||
| @ -100,14 +100,14 @@ static void finish_read_pci_config(sPAPREnvironment *spapr, uint64_t buid, | ||||
|     if (!pci_dev || (addr % size) || (addr >= pci_config_size(pci_dev))) { | ||||
|         /* Access must be to a valid device, within bounds and
 | ||||
|          * naturally aligned */ | ||||
|         rtas_st(rets, 0, -1); | ||||
|         rtas_st(rets, 0, RTAS_OUT_HW_ERROR); | ||||
|         return; | ||||
|     } | ||||
| 
 | ||||
|     val = pci_host_config_read_common(pci_dev, addr, | ||||
|                                       pci_config_size(pci_dev), size); | ||||
| 
 | ||||
|     rtas_st(rets, 0, 0); | ||||
|     rtas_st(rets, 0, RTAS_OUT_SUCCESS); | ||||
|     rtas_st(rets, 1, val); | ||||
| } | ||||
| 
 | ||||
| @ -120,7 +120,7 @@ static void rtas_ibm_read_pci_config(PowerPCCPU *cpu, sPAPREnvironment *spapr, | ||||
|     uint32_t size, addr; | ||||
| 
 | ||||
|     if ((nargs != 4) || (nret != 2)) { | ||||
|         rtas_st(rets, 0, -1); | ||||
|         rtas_st(rets, 0, RTAS_OUT_HW_ERROR); | ||||
|         return; | ||||
|     } | ||||
| 
 | ||||
| @ -139,7 +139,7 @@ static void rtas_read_pci_config(PowerPCCPU *cpu, sPAPREnvironment *spapr, | ||||
|     uint32_t size, addr; | ||||
| 
 | ||||
|     if ((nargs != 2) || (nret != 2)) { | ||||
|         rtas_st(rets, 0, -1); | ||||
|         rtas_st(rets, 0, RTAS_OUT_HW_ERROR); | ||||
|         return; | ||||
|     } | ||||
| 
 | ||||
| @ -157,7 +157,7 @@ static void finish_write_pci_config(sPAPREnvironment *spapr, uint64_t buid, | ||||
| 
 | ||||
|     if ((size != 1) && (size != 2) && (size != 4)) { | ||||
|         /* access must be 1, 2 or 4 bytes */ | ||||
|         rtas_st(rets, 0, -1); | ||||
|         rtas_st(rets, 0, RTAS_OUT_HW_ERROR); | ||||
|         return; | ||||
|     } | ||||
| 
 | ||||
| @ -167,14 +167,14 @@ static void finish_write_pci_config(sPAPREnvironment *spapr, uint64_t buid, | ||||
|     if (!pci_dev || (addr % size) || (addr >= pci_config_size(pci_dev))) { | ||||
|         /* Access must be to a valid device, within bounds and
 | ||||
|          * naturally aligned */ | ||||
|         rtas_st(rets, 0, -1); | ||||
|         rtas_st(rets, 0, RTAS_OUT_HW_ERROR); | ||||
|         return; | ||||
|     } | ||||
| 
 | ||||
|     pci_host_config_write_common(pci_dev, addr, pci_config_size(pci_dev), | ||||
|                                  val, size); | ||||
| 
 | ||||
|     rtas_st(rets, 0, 0); | ||||
|     rtas_st(rets, 0, RTAS_OUT_SUCCESS); | ||||
| } | ||||
| 
 | ||||
| static void rtas_ibm_write_pci_config(PowerPCCPU *cpu, sPAPREnvironment *spapr, | ||||
| @ -186,7 +186,7 @@ static void rtas_ibm_write_pci_config(PowerPCCPU *cpu, sPAPREnvironment *spapr, | ||||
|     uint32_t val, size, addr; | ||||
| 
 | ||||
|     if ((nargs != 5) || (nret != 1)) { | ||||
|         rtas_st(rets, 0, -1); | ||||
|         rtas_st(rets, 0, RTAS_OUT_HW_ERROR); | ||||
|         return; | ||||
|     } | ||||
| 
 | ||||
| @ -206,7 +206,7 @@ static void rtas_write_pci_config(PowerPCCPU *cpu, sPAPREnvironment *spapr, | ||||
|     uint32_t val, size, addr; | ||||
| 
 | ||||
|     if ((nargs != 3) || (nret != 1)) { | ||||
|         rtas_st(rets, 0, -1); | ||||
|         rtas_st(rets, 0, RTAS_OUT_HW_ERROR); | ||||
|         return; | ||||
|     } | ||||
| 
 | ||||
| @ -293,7 +293,7 @@ static void rtas_ibm_change_msi(PowerPCCPU *cpu, sPAPREnvironment *spapr, | ||||
|         break; | ||||
|     default: | ||||
|         fprintf(stderr, "rtas_ibm_change_msi(%u) is not implemented\n", func); | ||||
|         rtas_st(rets, 0, -3); /* Parameter error */ | ||||
|         rtas_st(rets, 0, RTAS_OUT_PARAM_ERROR); | ||||
|         return; | ||||
|     } | ||||
| 
 | ||||
| @ -303,7 +303,7 @@ static void rtas_ibm_change_msi(PowerPCCPU *cpu, sPAPREnvironment *spapr, | ||||
|         pdev = find_dev(spapr, buid, config_addr); | ||||
|     } | ||||
|     if (!phb || !pdev) { | ||||
|         rtas_st(rets, 0, -3); /* Parameter error */ | ||||
|         rtas_st(rets, 0, RTAS_OUT_PARAM_ERROR); | ||||
|         return; | ||||
|     } | ||||
| 
 | ||||
| @ -312,11 +312,11 @@ static void rtas_ibm_change_msi(PowerPCCPU *cpu, sPAPREnvironment *spapr, | ||||
|         ndev = spapr_msicfg_find(phb, config_addr, false); | ||||
|         if (ndev < 0) { | ||||
|             trace_spapr_pci_msi("MSI has not been enabled", -1, config_addr); | ||||
|             rtas_st(rets, 0, -1); /* Hardware error */ | ||||
|             rtas_st(rets, 0, RTAS_OUT_HW_ERROR); | ||||
|             return; | ||||
|         } | ||||
|         trace_spapr_pci_msi("Released MSIs", ndev, config_addr); | ||||
|         rtas_st(rets, 0, 0); | ||||
|         rtas_st(rets, 0, RTAS_OUT_SUCCESS); | ||||
|         rtas_st(rets, 1, 0); | ||||
|         return; | ||||
|     } | ||||
| @ -327,7 +327,7 @@ static void rtas_ibm_change_msi(PowerPCCPU *cpu, sPAPREnvironment *spapr, | ||||
|     ndev = spapr_msicfg_find(phb, config_addr, true); | ||||
|     if (ndev >= SPAPR_MSIX_MAX_DEVS || ndev < 0) { | ||||
|         fprintf(stderr, "No free entry for a new MSI device\n"); | ||||
|         rtas_st(rets, 0, -1); /* Hardware error */ | ||||
|         rtas_st(rets, 0, RTAS_OUT_HW_ERROR); | ||||
|         return; | ||||
|     } | ||||
|     trace_spapr_pci_msi("Configuring MSI", ndev, config_addr); | ||||
| @ -336,7 +336,7 @@ static void rtas_ibm_change_msi(PowerPCCPU *cpu, sPAPREnvironment *spapr, | ||||
|     if (phb->msi_table[ndev].nvec && (req_num != phb->msi_table[ndev].nvec)) { | ||||
|         /* Unexpected behaviour */ | ||||
|         fprintf(stderr, "Cannot reuse MSI config for device#%d", ndev); | ||||
|         rtas_st(rets, 0, -1); /* Hardware error */ | ||||
|         rtas_st(rets, 0, RTAS_OUT_HW_ERROR); | ||||
|         return; | ||||
|     } | ||||
| 
 | ||||
| @ -346,7 +346,7 @@ static void rtas_ibm_change_msi(PowerPCCPU *cpu, sPAPREnvironment *spapr, | ||||
|                                        ret_intr_type == RTAS_TYPE_MSI); | ||||
|         if (irq < 0) { | ||||
|             fprintf(stderr, "Cannot allocate MSIs for device#%d", ndev); | ||||
|             rtas_st(rets, 0, -1); /* Hardware error */ | ||||
|             rtas_st(rets, 0, RTAS_OUT_HW_ERROR); | ||||
|             return; | ||||
|         } | ||||
|         phb->msi_table[ndev].irq = irq; | ||||
| @ -358,7 +358,7 @@ static void rtas_ibm_change_msi(PowerPCCPU *cpu, sPAPREnvironment *spapr, | ||||
|     spapr_msi_setmsg(pdev, spapr->msi_win_addr, ret_intr_type == RTAS_TYPE_MSIX, | ||||
|                      phb->msi_table[ndev].irq, req_num); | ||||
| 
 | ||||
|     rtas_st(rets, 0, 0); | ||||
|     rtas_st(rets, 0, RTAS_OUT_SUCCESS); | ||||
|     rtas_st(rets, 1, req_num); | ||||
|     rtas_st(rets, 2, ++seq_num); | ||||
|     rtas_st(rets, 3, ret_intr_type); | ||||
| @ -383,7 +383,7 @@ static void rtas_ibm_query_interrupt_source_number(PowerPCCPU *cpu, | ||||
|     /* Fins sPAPRPHBState */ | ||||
|     phb = find_phb(spapr, buid); | ||||
|     if (!phb) { | ||||
|         rtas_st(rets, 0, -3); /* Parameter error */ | ||||
|         rtas_st(rets, 0, RTAS_OUT_PARAM_ERROR); | ||||
|         return; | ||||
|     } | ||||
| 
 | ||||
| @ -391,7 +391,7 @@ static void rtas_ibm_query_interrupt_source_number(PowerPCCPU *cpu, | ||||
|     ndev = spapr_msicfg_find(phb, config_addr, false); | ||||
|     if (ndev < 0) { | ||||
|         trace_spapr_pci_msi("MSI has not been enabled", -1, config_addr); | ||||
|         rtas_st(rets, 0, -1); /* Hardware error */ | ||||
|         rtas_st(rets, 0, RTAS_OUT_HW_ERROR); | ||||
|         return; | ||||
|     } | ||||
| 
 | ||||
| @ -399,7 +399,7 @@ static void rtas_ibm_query_interrupt_source_number(PowerPCCPU *cpu, | ||||
|     trace_spapr_pci_rtas_ibm_query_interrupt_source_number(ioa_intr_num, | ||||
|                                                            intr_src_num); | ||||
| 
 | ||||
|     rtas_st(rets, 0, 0); | ||||
|     rtas_st(rets, 0, RTAS_OUT_SUCCESS); | ||||
|     rtas_st(rets, 1, intr_src_num); | ||||
|     rtas_st(rets, 2, 1);/* 0 == level; 1 == edge */ | ||||
| } | ||||
|  | ||||
| @ -47,10 +47,10 @@ static void rtas_display_character(PowerPCCPU *cpu, sPAPREnvironment *spapr, | ||||
|     VIOsPAPRDevice *sdev = vty_lookup(spapr, 0); | ||||
| 
 | ||||
|     if (!sdev) { | ||||
|         rtas_st(rets, 0, -1); | ||||
|         rtas_st(rets, 0, RTAS_OUT_HW_ERROR); | ||||
|     } else { | ||||
|         vty_putchars(sdev, &c, sizeof(c)); | ||||
|         rtas_st(rets, 0, 0); | ||||
|         rtas_st(rets, 0, RTAS_OUT_SUCCESS); | ||||
|     } | ||||
| } | ||||
| 
 | ||||
| @ -62,13 +62,13 @@ static void rtas_get_time_of_day(PowerPCCPU *cpu, sPAPREnvironment *spapr, | ||||
|     struct tm tm; | ||||
| 
 | ||||
|     if (nret != 8) { | ||||
|         rtas_st(rets, 0, -3); | ||||
|         rtas_st(rets, 0, RTAS_OUT_PARAM_ERROR); | ||||
|         return; | ||||
|     } | ||||
| 
 | ||||
|     qemu_get_timedate(&tm, spapr->rtc_offset); | ||||
| 
 | ||||
|     rtas_st(rets, 0, 0); /* Success */ | ||||
|     rtas_st(rets, 0, RTAS_OUT_SUCCESS); | ||||
|     rtas_st(rets, 1, tm.tm_year + 1900); | ||||
|     rtas_st(rets, 2, tm.tm_mon + 1); | ||||
|     rtas_st(rets, 3, tm.tm_mday); | ||||
| @ -96,7 +96,7 @@ static void rtas_set_time_of_day(PowerPCCPU *cpu, sPAPREnvironment *spapr, | ||||
|     rtc_change_mon_event(&tm); | ||||
|     spapr->rtc_offset = qemu_timedate_diff(&tm); | ||||
| 
 | ||||
|     rtas_st(rets, 0, 0); /* Success */ | ||||
|     rtas_st(rets, 0, RTAS_OUT_SUCCESS); | ||||
| } | ||||
| 
 | ||||
| static void rtas_power_off(PowerPCCPU *cpu, sPAPREnvironment *spapr, | ||||
| @ -104,11 +104,11 @@ static void rtas_power_off(PowerPCCPU *cpu, sPAPREnvironment *spapr, | ||||
|                            uint32_t nret, target_ulong rets) | ||||
| { | ||||
|     if (nargs != 2 || nret != 1) { | ||||
|         rtas_st(rets, 0, -3); | ||||
|         rtas_st(rets, 0, RTAS_OUT_PARAM_ERROR); | ||||
|         return; | ||||
|     } | ||||
|     qemu_system_shutdown_request(); | ||||
|     rtas_st(rets, 0, 0); | ||||
|     rtas_st(rets, 0, RTAS_OUT_SUCCESS); | ||||
| } | ||||
| 
 | ||||
| static void rtas_system_reboot(PowerPCCPU *cpu, sPAPREnvironment *spapr, | ||||
| @ -117,11 +117,11 @@ static void rtas_system_reboot(PowerPCCPU *cpu, sPAPREnvironment *spapr, | ||||
|                                uint32_t nret, target_ulong rets) | ||||
| { | ||||
|     if (nargs != 0 || nret != 1) { | ||||
|         rtas_st(rets, 0, -3); | ||||
|         rtas_st(rets, 0, RTAS_OUT_PARAM_ERROR); | ||||
|         return; | ||||
|     } | ||||
|     qemu_system_reset_request(); | ||||
|     rtas_st(rets, 0, 0); | ||||
|     rtas_st(rets, 0, RTAS_OUT_SUCCESS); | ||||
| } | ||||
| 
 | ||||
| static void rtas_query_cpu_stopped_state(PowerPCCPU *cpu_, | ||||
| @ -134,7 +134,7 @@ static void rtas_query_cpu_stopped_state(PowerPCCPU *cpu_, | ||||
|     CPUState *cpu; | ||||
| 
 | ||||
|     if (nargs != 1 || nret != 2) { | ||||
|         rtas_st(rets, 0, -3); | ||||
|         rtas_st(rets, 0, RTAS_OUT_PARAM_ERROR); | ||||
|         return; | ||||
|     } | ||||
| 
 | ||||
| @ -147,12 +147,12 @@ static void rtas_query_cpu_stopped_state(PowerPCCPU *cpu_, | ||||
|             rtas_st(rets, 1, 2); | ||||
|         } | ||||
| 
 | ||||
|         rtas_st(rets, 0, 0); | ||||
|         rtas_st(rets, 0, RTAS_OUT_SUCCESS); | ||||
|         return; | ||||
|     } | ||||
| 
 | ||||
|     /* Didn't find a matching cpu */ | ||||
|     rtas_st(rets, 0, -3); | ||||
|     rtas_st(rets, 0, RTAS_OUT_PARAM_ERROR); | ||||
| } | ||||
| 
 | ||||
| static void rtas_start_cpu(PowerPCCPU *cpu_, sPAPREnvironment *spapr, | ||||
| @ -164,7 +164,7 @@ static void rtas_start_cpu(PowerPCCPU *cpu_, sPAPREnvironment *spapr, | ||||
|     CPUState *cs; | ||||
| 
 | ||||
|     if (nargs != 3 || nret != 1) { | ||||
|         rtas_st(rets, 0, -3); | ||||
|         rtas_st(rets, 0, RTAS_OUT_PARAM_ERROR); | ||||
|         return; | ||||
|     } | ||||
| 
 | ||||
| @ -178,7 +178,7 @@ static void rtas_start_cpu(PowerPCCPU *cpu_, sPAPREnvironment *spapr, | ||||
|         CPUPPCState *env = &cpu->env; | ||||
| 
 | ||||
|         if (!cs->halted) { | ||||
|             rtas_st(rets, 0, -1); | ||||
|             rtas_st(rets, 0, RTAS_OUT_HW_ERROR); | ||||
|             return; | ||||
|         } | ||||
| 
 | ||||
| @ -194,12 +194,12 @@ static void rtas_start_cpu(PowerPCCPU *cpu_, sPAPREnvironment *spapr, | ||||
| 
 | ||||
|         qemu_cpu_kick(cs); | ||||
| 
 | ||||
|         rtas_st(rets, 0, 0); | ||||
|         rtas_st(rets, 0, RTAS_OUT_SUCCESS); | ||||
|         return; | ||||
|     } | ||||
| 
 | ||||
|     /* Didn't find a matching cpu */ | ||||
|     rtas_st(rets, 0, -3); | ||||
|     rtas_st(rets, 0, RTAS_OUT_PARAM_ERROR); | ||||
| } | ||||
| 
 | ||||
| static void rtas_stop_self(PowerPCCPU *cpu, sPAPREnvironment *spapr, | ||||
| @ -255,7 +255,7 @@ target_ulong spapr_rtas_call(PowerPCCPU *cpu, sPAPREnvironment *spapr, | ||||
|     } | ||||
| 
 | ||||
|     hcall_dprintf("Unknown RTAS token 0x%x\n", token); | ||||
|     rtas_st(rets, 0, -3); | ||||
|     rtas_st(rets, 0, RTAS_OUT_PARAM_ERROR); | ||||
|     return H_PARAMETER; | ||||
| } | ||||
| 
 | ||||
|  | ||||
| @ -331,25 +331,25 @@ static void rtas_set_tce_bypass(PowerPCCPU *cpu, sPAPREnvironment *spapr, | ||||
|     uint32_t unit, enable; | ||||
| 
 | ||||
|     if (nargs != 2) { | ||||
|         rtas_st(rets, 0, -3); | ||||
|         rtas_st(rets, 0, RTAS_OUT_PARAM_ERROR); | ||||
|         return; | ||||
|     } | ||||
|     unit = rtas_ld(args, 0); | ||||
|     enable = rtas_ld(args, 1); | ||||
|     dev = spapr_vio_find_by_reg(bus, unit); | ||||
|     if (!dev) { | ||||
|         rtas_st(rets, 0, -3); | ||||
|         rtas_st(rets, 0, RTAS_OUT_PARAM_ERROR); | ||||
|         return; | ||||
|     } | ||||
| 
 | ||||
|     if (!dev->tcet) { | ||||
|         rtas_st(rets, 0, -3); | ||||
|         rtas_st(rets, 0, RTAS_OUT_PARAM_ERROR); | ||||
|         return; | ||||
|     } | ||||
| 
 | ||||
|     spapr_tce_set_bypass(dev->tcet, !!enable); | ||||
| 
 | ||||
|     rtas_st(rets, 0, 0); | ||||
|     rtas_st(rets, 0, RTAS_OUT_SUCCESS); | ||||
| } | ||||
| 
 | ||||
| static void rtas_quiesce(PowerPCCPU *cpu, sPAPREnvironment *spapr, | ||||
| @ -362,7 +362,7 @@ static void rtas_quiesce(PowerPCCPU *cpu, sPAPREnvironment *spapr, | ||||
|     VIOsPAPRDevice *dev = NULL; | ||||
| 
 | ||||
|     if (nargs != 0) { | ||||
|         rtas_st(rets, 0, -3); | ||||
|         rtas_st(rets, 0, RTAS_OUT_PARAM_ERROR); | ||||
|         return; | ||||
|     } | ||||
| 
 | ||||
| @ -371,7 +371,7 @@ static void rtas_quiesce(PowerPCCPU *cpu, sPAPREnvironment *spapr, | ||||
|         spapr_vio_quiesce_one(dev); | ||||
|     } | ||||
| 
 | ||||
|     rtas_st(rets, 0, 0); | ||||
|     rtas_st(rets, 0, RTAS_OUT_SUCCESS); | ||||
| } | ||||
| 
 | ||||
| static VIOsPAPRDevice *reg_conflict(VIOsPAPRDevice *dev) | ||||
|  | ||||
| @ -332,6 +332,13 @@ static inline int spapr_allocate_lsi(int hint) | ||||
|     return spapr_allocate_irq(hint, true); | ||||
| } | ||||
| 
 | ||||
| /* RTAS return codes */ | ||||
| #define RTAS_OUT_SUCCESS            0 | ||||
| #define RTAS_OUT_NO_ERRORS_FOUND    1 | ||||
| #define RTAS_OUT_HW_ERROR           -1 | ||||
| #define RTAS_OUT_BUSY               -2 | ||||
| #define RTAS_OUT_PARAM_ERROR        -3 | ||||
| 
 | ||||
| static inline uint64_t ppc64_phys_to_real(uint64_t addr) | ||||
| { | ||||
|     return addr & ~0xF000000000000000ULL; | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user
	 Alexey Kardashevskiy
						Alexey Kardashevskiy