The fpcr value seen in a process running in a VM comes from the Linux kernel, file linux/arch/alpha/kernel/process.c, function flush_thread():
/* Arrange for each exec'ed process to start off with a clean slate
with respect to the FPU. This is all exceptions disabled. */ current_thread_info()->ieee_state = 0; wrfpcr(FPCR_DYN_NORMAL | ieee_swcr_to_fpcr(0));
where FPCR_DYN_NORMAL is 0x2UL << 58 /* towards nearest */
Where do we go from here? As far as I understand, qemu-alpha ought to initialize the DYN bits to FPCR_DYN_NORMAL. Where in the code should this be done? I see code in target/alpha/cpu.c, function alpha_cpu_initfn, that initializes the DYN bits to FPCR_DYN_NORMAL. Is this at the wrong place? Is it insufficient for another reason?
The fpcr value seen in a process running in a VM comes from the Linux kernel, file linux/arch/ alpha/kernel/ process. c, function flush_thread():
/* Arrange for each exec'ed process to start off with a clean slate
current_ thread_ info()- >ieee_state = 0;
wrfpcr( FPCR_DYN_ NORMAL | ieee_swcr_ to_fpcr( 0));
with respect to the FPU. This is all exceptions disabled. */
where FPCR_DYN_NORMAL is 0x2UL << 58 /* towards nearest */
Where do we go from here? As far as I understand, qemu-alpha ought to initialize the DYN bits to FPCR_DYN_NORMAL. Where in the code should this be done? I see code in target/alpha/cpu.c, function alpha_cpu_initfn, that initializes the DYN bits to FPCR_DYN_NORMAL. Is this at the wrong place? Is it insufficient for another reason?