[DTrace-devel] [PATCH 03/10] Exclude %r0 from automatic register allocation

Kris Van Hees kris.van.hees at oracle.com
Fri Mar 18 19:04:29 UTC 2022


The %r0 register is used as a scratch register in various parts of the
coe gneerator and should therefore not be among the registers that can
be allocated when dt_regset_alloc() is called.

This patch also offers a minor improvement in the regset debugging
output, reporting in-use registers by number rather than with a 'x'
in the register list.

Signed-off-by: Kris Van Hees <kris.van.hees at oracle.com>
---
 libdtrace/dt_regset.c | 10 +++++-----
 1 file changed, 5 insertions(+), 5 deletions(-)

diff --git a/libdtrace/dt_regset.c b/libdtrace/dt_regset.c
index 11f0fdc1..143c5c24 100644
--- a/libdtrace/dt_regset.c
+++ b/libdtrace/dt_regset.c
@@ -1,6 +1,6 @@
 /*
  * Oracle Linux DTrace.
- * Copyright (c) 2003, 2020, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 2022, Oracle and/or its affiliates. All rights reserved.
  * Licensed under the Universal Permissive License v 1.0 as shown at
  * http://oss.oracle.com/licenses/upl.
  */
@@ -62,14 +62,14 @@ dt_regset_alloc(dt_regset_t *drp)
 {
 	int reg;
 
-	for (reg = drp->dr_size - 1; reg >= 0; reg--) {
+	for (reg = drp->dr_size - 1; reg > 0; reg--) {
 		if (BT_TEST(drp->dr_active, reg) == 0) {
 			BT_SET(drp->dr_active, reg);
 			return reg;
 		}
 	}
 
-	for (reg = drp->dr_size - 1; reg >= 0; reg--) {
+	for (reg = drp->dr_size - 1; reg > 0; reg--) {
 		if (BT_TEST(drp->dr_spilled, reg) == 0) {
 			drp->dr_spill_store(reg);
 			BT_SET(drp->dr_spilled, reg);
@@ -157,8 +157,8 @@ dt_regset_dump(dt_regset_t *drp, const char *pref)
 
 	fprintf(stderr, "%s: Regset: ", pref);
 	for (reg = 0; reg < drp->dr_size; reg++) {
-		fprintf(stderr, "%c", BT_TEST(drp->dr_active, reg) ? 'x' :
-				      BT_TEST(drp->dr_spilled, reg) ? 's' :
+		fprintf(stderr, "%c", BT_TEST(drp->dr_active, reg) ? '0' + reg:
+				      BT_TEST(drp->dr_spilled, reg) ? '0' + reg:
 				      '.');
 	}
 	fprintf(stderr, "\n");
-- 
2.34.1




More information about the DTrace-devel mailing list