On 29 June 2017 at 13:35, Philippe Mathieu-Daudé <f4...@amsat.org> wrote: > This is true it is better to abort here than risking a deadlock. > > However it seems to me they are 3 issues here: > - the deadlock pattern is caused by using a global variable, > - stellaris:ssys_calculate_system_clock() no checking RCC.SYSDIV and > RCC2.SYSDIV2 values <= 2 are reserved (GUEST_ERROR) > - stellaris:ssys_write(RCC2) not overrides correctly RCC
Stellaris works fine. It's other ARMv7M boards (which might forget to set system_clock_scale) which don't work. > I'd rather take this opportunity to fix the deadlock pattern using a > getter/setter on system_clock_scale, doing the zero check in the setter and > eventually aborting in the getter, what do you think? We should be using a clock property on the CPU instead of system_clock_scale. Unfortunately Konrad's series attempting to add that infrastructure is still in the "trying to sort out the right API in code review" stage. I don't think it's worth trying to fiddle with the API for it before we have the right eventual infrastructure in place. (What system_clock_scale is actually doing is setting the emulated frequency of the CPU, since that affects the frequency of the timer.) thanks -- PMM