On 16.01.20 14:07, Janosch Frank wrote: > On 1/16/20 1:24 PM, David Hildenbrand wrote: >> On 16.01.20 13:05, Janosch Frank wrote: >>> All CRs are set to 0 and CRs 0 and 14 are set to pre-defined values, >>> so we also need to test 1-13 and 15 for 0. >>> >>> And while we're at it, let's also set some values to cr 1, 7 and 13, so >>> we can actually be sure that they will be zeroed. >>> >>> Signed-off-by: Janosch Frank <frankja@xxxxxxxxxxxxx> >>> --- >>> s390x/smp.c | 19 ++++++++++++++++++- >>> 1 file changed, 18 insertions(+), 1 deletion(-) >>> >>> diff --git a/s390x/smp.c b/s390x/smp.c >>> index d430638..ce3215d 100644 >>> --- a/s390x/smp.c >>> +++ b/s390x/smp.c >>> @@ -176,16 +176,31 @@ static void test_emcall(void) >>> report_prefix_pop(); >>> } >>> >>> +/* Used to dirty registers of cpu #1 before it is reset */ >>> +static void test_func_initial(void) >>> +{ >>> + lctlg(1, 0x42000UL); >>> + lctlg(7, 0x43000UL); >>> + lctlg(13, 0x44000UL); >>> + testflag = 1; >>> + mb(); >>> + cpu_loop(); >> >> Can we make cpu_loop() the default when this function returns? (IOW, an >> endless loop whenever a cpu finished executing the function?) > > So adding it to cstart64.S after the br 14? Yes I think so. > >> >> Do we need the mb() here? > > Would the compiler reorder the lctlcg and testflag if it could? lctlg() does not have a "memory" constraint, so I guess it would be valid if it would reorder. I assume the mb() would have to be moved in front of the testflag=1? -- Thanks, David / dhildenb