do { /* * The SEED CSR must be accessed with a read-write instruction.
*/ unsignedlong csr_seed = csr_swap(CSR_SEED, 0); unsignedlong opst = csr_seed & SEED_OPST_MASK;
switch (opst) { case SEED_OPST_ES16:
entropy[valid_seeds++] = csr_seed & SEED_ENTROPY_MASK; if (valid_seeds == needed_seeds) returntrue; break;
case SEED_OPST_DEAD:
pr_err_once("archrandom: Unrecoverable error\n"); returnfalse;
case SEED_OPST_BIST: case SEED_OPST_WAIT: default:
cpu_relax(); continue;
}
} while (--retry);
/* * If Zkr is supported and csr_seed_long succeeds, we return one long * worth of entropy.
*/ if (riscv_has_extension_likely(RISCV_ISA_EXT_ZKR) && csr_seed_long(v)) return 1;
return 0;
}
#endif/* ASM_RISCV_ARCHRANDOM_H */
Messung V0.5
¤ Dauer der Verarbeitung: 0.19 Sekunden
(vorverarbeitet)
¤
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.