>> + >> +#ifndef CONFIG_USER_ONLY >> +void HELPER(stidp)(CPUS390XState *env, uint64_t addr) >> +{ >> + S390CPU *cpu = s390_env_get_cpu(env); >> + uint64_t cpuid = s390_cpuid_from_cpu_model(cpu->model); >> + >> + if (addr & 0x7) { >> + program_interrupt(env, PGM_SPECIFICATION, ILEN_LATER_INC); >> + return; >> + } >> + >> + /* basic mode, write the cpu address into the first 4 bit of the ID */ >> + cpuid |= ((uint64_t)env->cpu_num & 0xf) << 54; >> + cpu_stq_data(env, addr, cpuid); >> +} >> +#endif > > I don't really see the point of using an helper instead of just updating > the existing code. From what I understand the cpuid does not change at > runtime, so the s390_cpuid_from_cpu_model function can also be called > from translate.c. > > Aurelien >
>From what I can see, conditional exceptions are more complicated to implement without helpers (involves generating compares, jumps and so on). As this function is not expected to be executed on hot paths, I think moving it into a helper is the right thing to do. -- Thanks, David