spapr: Remove rtas_st_buffer_direct()
rtas_st_buffer_direct() is a not particularly useful wrapper around cpu_physical_memory_write(). All the callers are in rtas_ibm_configure_connector, where it's better handled by local helper. Signed-off-by: David Gibson <david@gibson.dropbear.id.au> Reviewed-by: Alexey Kardashevskiy <aik@ozlabs.ru>
This commit is contained in:
		
							parent
							
								
									c920f7b42f
								
							
						
					
					
						commit
						f201987b84
					
				@ -506,6 +506,13 @@ out:
 | 
				
			|||||||
#define CC_VAL_DATA_OFFSET ((CC_IDX_PROP_DATA_OFFSET + 1) * 4)
 | 
					#define CC_VAL_DATA_OFFSET ((CC_IDX_PROP_DATA_OFFSET + 1) * 4)
 | 
				
			||||||
#define CC_WA_LEN 4096
 | 
					#define CC_WA_LEN 4096
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					static void configure_connector_st(target_ulong addr, target_ulong offset,
 | 
				
			||||||
 | 
					                                   const void *buf, size_t len)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    cpu_physical_memory_write(ppc64_phys_to_real(addr + offset),
 | 
				
			||||||
 | 
					                              buf, MIN(len, CC_WA_LEN - offset));
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
static void rtas_ibm_configure_connector(PowerPCCPU *cpu,
 | 
					static void rtas_ibm_configure_connector(PowerPCCPU *cpu,
 | 
				
			||||||
                                         sPAPRMachineState *spapr,
 | 
					                                         sPAPRMachineState *spapr,
 | 
				
			||||||
                                         uint32_t token, uint32_t nargs,
 | 
					                                         uint32_t token, uint32_t nargs,
 | 
				
			||||||
@ -571,8 +578,7 @@ static void rtas_ibm_configure_connector(PowerPCCPU *cpu,
 | 
				
			|||||||
            /* provide the name of the next OF node */
 | 
					            /* provide the name of the next OF node */
 | 
				
			||||||
            wa_offset = CC_VAL_DATA_OFFSET;
 | 
					            wa_offset = CC_VAL_DATA_OFFSET;
 | 
				
			||||||
            rtas_st(wa_addr, CC_IDX_NODE_NAME_OFFSET, wa_offset);
 | 
					            rtas_st(wa_addr, CC_IDX_NODE_NAME_OFFSET, wa_offset);
 | 
				
			||||||
            rtas_st_buffer_direct(wa_addr + wa_offset, CC_WA_LEN - wa_offset,
 | 
					            configure_connector_st(wa_addr, wa_offset, name, strlen(name) + 1);
 | 
				
			||||||
                                  (uint8_t *)name, strlen(name) + 1);
 | 
					 | 
				
			||||||
            resp = SPAPR_DR_CC_RESPONSE_NEXT_CHILD;
 | 
					            resp = SPAPR_DR_CC_RESPONSE_NEXT_CHILD;
 | 
				
			||||||
            break;
 | 
					            break;
 | 
				
			||||||
        case FDT_END_NODE:
 | 
					        case FDT_END_NODE:
 | 
				
			||||||
@ -597,8 +603,7 @@ static void rtas_ibm_configure_connector(PowerPCCPU *cpu,
 | 
				
			|||||||
            /* provide the name of the next OF property */
 | 
					            /* provide the name of the next OF property */
 | 
				
			||||||
            wa_offset = CC_VAL_DATA_OFFSET;
 | 
					            wa_offset = CC_VAL_DATA_OFFSET;
 | 
				
			||||||
            rtas_st(wa_addr, CC_IDX_PROP_NAME_OFFSET, wa_offset);
 | 
					            rtas_st(wa_addr, CC_IDX_PROP_NAME_OFFSET, wa_offset);
 | 
				
			||||||
            rtas_st_buffer_direct(wa_addr + wa_offset, CC_WA_LEN - wa_offset,
 | 
					            configure_connector_st(wa_addr, wa_offset, name, strlen(name) + 1);
 | 
				
			||||||
                                  (uint8_t *)name, strlen(name) + 1);
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
            /* provide the length and value of the OF property. data gets
 | 
					            /* provide the length and value of the OF property. data gets
 | 
				
			||||||
             * placed immediately after NULL terminator of the OF property's
 | 
					             * placed immediately after NULL terminator of the OF property's
 | 
				
			||||||
@ -607,9 +612,7 @@ static void rtas_ibm_configure_connector(PowerPCCPU *cpu,
 | 
				
			|||||||
            wa_offset += strlen(name) + 1,
 | 
					            wa_offset += strlen(name) + 1,
 | 
				
			||||||
            rtas_st(wa_addr, CC_IDX_PROP_LEN, prop_len);
 | 
					            rtas_st(wa_addr, CC_IDX_PROP_LEN, prop_len);
 | 
				
			||||||
            rtas_st(wa_addr, CC_IDX_PROP_DATA_OFFSET, wa_offset);
 | 
					            rtas_st(wa_addr, CC_IDX_PROP_DATA_OFFSET, wa_offset);
 | 
				
			||||||
            rtas_st_buffer_direct(wa_addr + wa_offset, CC_WA_LEN - wa_offset,
 | 
					            configure_connector_st(wa_addr, wa_offset, prop->data, prop_len);
 | 
				
			||||||
                                  (uint8_t *)((struct fdt_property *)prop)->data,
 | 
					 | 
				
			||||||
                                  prop_len);
 | 
					 | 
				
			||||||
            resp = SPAPR_DR_CC_RESPONSE_NEXT_PROPERTY;
 | 
					            resp = SPAPR_DR_CC_RESPONSE_NEXT_PROPERTY;
 | 
				
			||||||
            break;
 | 
					            break;
 | 
				
			||||||
        case FDT_END:
 | 
					        case FDT_END:
 | 
				
			||||||
 | 
				
			|||||||
@ -506,14 +506,6 @@ static inline void rtas_st(target_ulong phys, int n, uint32_t val)
 | 
				
			|||||||
    stl_be_phys(&address_space_memory, ppc64_phys_to_real(phys + 4*n), val);
 | 
					    stl_be_phys(&address_space_memory, ppc64_phys_to_real(phys + 4*n), val);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
static inline void rtas_st_buffer_direct(target_ulong phys,
 | 
					 | 
				
			||||||
                                         target_ulong phys_len,
 | 
					 | 
				
			||||||
                                         uint8_t *buffer, uint16_t buffer_len)
 | 
					 | 
				
			||||||
{
 | 
					 | 
				
			||||||
    cpu_physical_memory_write(ppc64_phys_to_real(phys), buffer,
 | 
					 | 
				
			||||||
                              MIN(buffer_len, phys_len));
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
typedef void (*spapr_rtas_fn)(PowerPCCPU *cpu, sPAPRMachineState *sm,
 | 
					typedef void (*spapr_rtas_fn)(PowerPCCPU *cpu, sPAPRMachineState *sm,
 | 
				
			||||||
                              uint32_t token,
 | 
					                              uint32_t token,
 | 
				
			||||||
                              uint32_t nargs, target_ulong args,
 | 
					                              uint32_t nargs, target_ulong args,
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user