Page MenuHomeFreeBSD

D25572.id74191.diff
No OneTemporary

D25572.id74191.diff

Index: sys/arm/broadcom/bcm2835/bcm2835_firmware.c
===================================================================
--- sys/arm/broadcom/bcm2835/bcm2835_firmware.c
+++ sys/arm/broadcom/bcm2835/bcm2835_firmware.c
@@ -55,8 +55,6 @@
{NULL, 0}
};
-static bool bcm2835_firmware_get_revision(device_t, uint32_t *);
-
static int sysctl_bcm2835_firmware_get_revision(SYSCTL_HANDLER_ARGS);
static int
@@ -79,12 +77,16 @@
struct sysctl_ctx_list *ctx;
struct sysctl_oid *tree_node;
struct sysctl_oid_list *tree;
+ phandle_t node;
sc = device_get_softc(dev);
sc->sc_dev = dev;
/* TODO: Use the mboxes property to find the mbox */
+ node = ofw_bus_get_node(dev);
+ OF_device_register_xref(OF_xref_from_node(node), dev);
+
ctx = device_get_sysctl_ctx(sc->sc_dev);
tree_node = device_get_sysctl_tree(sc->sc_dev);
tree = SYSCTL_CHILDREN(tree_node);
Index: sys/cddl/dev/dtrace/aarch64/dtrace_subr.c
===================================================================
--- sys/cddl/dev/dtrace/aarch64/dtrace_subr.c
+++ sys/cddl/dev/dtrace/aarch64/dtrace_subr.c
@@ -231,6 +231,31 @@
(uintptr_t)which, (uintptr_t)fault, (uintptr_t)fltoffs);
}
+static void
+dtrace_load64(uint64_t *addr, struct trapframe *frame, u_int reg)
+{
+
+ KASSERT(reg <= 31, ("dtrace_load64: Invalid register %u", reg));
+ if (reg < nitems(frame->tf_x))
+ frame->tf_x[reg] = *addr;
+ else if (reg == 30) /* lr */
+ frame->tf_lr = *addr;
+ /* Nothing to do for load to xzr */
+}
+
+static void
+dtrace_store64(uint64_t *addr, struct trapframe *frame, u_int reg)
+{
+
+ KASSERT(reg <= 31, ("dtrace_store64: Invalid register %u", reg));
+ if (reg < nitems(frame->tf_x))
+ *addr = frame->tf_x[reg];
+ else if (reg == 30) /* lr */
+ *addr = frame->tf_lr;
+ else if (reg == 31) /* xzr */
+ *addr = 0;
+}
+
static int
dtrace_invop_start(struct trapframe *frame)
{
@@ -258,12 +283,12 @@
sp -= (~offs & OFFSET_MASK) + 1;
else
sp += (offs);
- *(sp + 0) = frame->tf_x[arg1];
- *(sp + 1) = frame->tf_x[arg2];
+ dtrace_store64(sp + 0, frame, arg1);
+ dtrace_store64(sp + 1, frame, arg2);
break;
case LDP_64:
- frame->tf_x[arg1] = *(sp + 0);
- frame->tf_x[arg2] = *(sp + 1);
+ dtrace_load64(sp, frame, arg1);
+ dtrace_load64(sp + 1, frame, arg2);
if (offs >> (OFFSET_SIZE - 1))
sp -= (~offs & OFFSET_MASK) + 1;
else

File Metadata

Mime Type
text/plain
Expires
Mon, Dec 22, 6:41 AM (10 h, 11 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
27138386
Default Alt Text
D25572.id74191.diff (2 KB)

Event Timeline