1*708ec6dbSNina Schoetterl-Glausch /* SPDX-License-Identifier: GPL-2.0-only */ 2*708ec6dbSNina Schoetterl-Glausch /* 3*708ec6dbSNina Schoetterl-Glausch * Copyright IBM Corp. 2023 4*708ec6dbSNina Schoetterl-Glausch * 5*708ec6dbSNina Schoetterl-Glausch * Snippet used by the STLFE interpretive execution facilities test. 6*708ec6dbSNina Schoetterl-Glausch */ 7*708ec6dbSNina Schoetterl-Glausch #include <libcflat.h> 8*708ec6dbSNina Schoetterl-Glausch #include <snippet-exit.h> 9*708ec6dbSNina Schoetterl-Glausch main(void)10*708ec6dbSNina Schoetterl-Glauschint main(void) 11*708ec6dbSNina Schoetterl-Glausch { 12*708ec6dbSNina Schoetterl-Glausch const unsigned int max_fac_len = 8; 13*708ec6dbSNina Schoetterl-Glausch uint64_t len_arg = max_fac_len - 1; 14*708ec6dbSNina Schoetterl-Glausch uint64_t res[max_fac_len + 1]; 15*708ec6dbSNina Schoetterl-Glausch uint64_t fac[max_fac_len]; 16*708ec6dbSNina Schoetterl-Glausch 17*708ec6dbSNina Schoetterl-Glausch asm volatile (" lgr 0,%[len]\n" 18*708ec6dbSNina Schoetterl-Glausch " stfle %[fac]\n" 19*708ec6dbSNina Schoetterl-Glausch " lgr %[len],0\n" 20*708ec6dbSNina Schoetterl-Glausch : [fac] "=Q"(fac), 21*708ec6dbSNina Schoetterl-Glausch [len] "+d"(len_arg) 22*708ec6dbSNina Schoetterl-Glausch : 23*708ec6dbSNina Schoetterl-Glausch : "%r0", "cc" 24*708ec6dbSNina Schoetterl-Glausch ); 25*708ec6dbSNina Schoetterl-Glausch res[0] = len_arg; 26*708ec6dbSNina Schoetterl-Glausch memcpy(&res[1], fac, sizeof(fac)); 27*708ec6dbSNina Schoetterl-Glausch force_exit_value((uint64_t)&res); 28*708ec6dbSNina Schoetterl-Glausch return 0; 29*708ec6dbSNina Schoetterl-Glausch } 30