Page Menu
Home
FreeBSD
Search
Configure Global Search
Log In
Files
F110710887
D7403.id19255.diff
No One
Temporary
Actions
View File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Flag For Later
Award Token
Size
1 KB
Referenced Files
None
Subscribers
None
D7403.id19255.diff
View Options
Index: head/sys/powerpc/aim/locore.S
===================================================================
--- head/sys/powerpc/aim/locore.S
+++ head/sys/powerpc/aim/locore.S
@@ -6,3 +6,10 @@
#include <powerpc/aim/locore32.S>
#endif
+/*
+ * XXX: This should be moved to a shared AIM/booke asm file, if one ever is
+ * created.
+ */
+ENTRY(get_spr)
+ mfspr %r3, 0
+ blr
Index: head/sys/powerpc/booke/locore.S
===================================================================
--- head/sys/powerpc/booke/locore.S
+++ head/sys/powerpc/booke/locore.S
@@ -848,6 +848,14 @@
blr
+/*
+ * XXX: This should be moved to a shared AIM/booke asm file, if one ever is
+ * created.
+ */
+ENTRY(get_spr)
+ mfspr %r3, 0
+ blr
+
/************************************************************************/
/* Data section */
/************************************************************************/
Index: head/sys/powerpc/powerpc/machdep.c
===================================================================
--- head/sys/powerpc/powerpc/machdep.c
+++ head/sys/powerpc/powerpc/machdep.c
@@ -516,3 +516,31 @@
}
}
+/*
+ * Simple ddb(4) command/hack to view any SPR on the running CPU.
+ * Uses a trivial asm function to perform the mfspr, and rewrites the mfspr
+ * instruction each time.
+ * XXX: Since it uses code modification, it won't work if the kernel code pages
+ * are marked RO.
+ */
+extern register_t get_spr(int);
+
+DB_SHOW_COMMAND(spr, db_show_spr)
+{
+ register_t spr;
+ volatile uint32_t *p;
+ int sprno, saved_sprno;
+
+ if (!have_addr)
+ return;
+
+ saved_sprno = sprno = (intptr_t) addr;
+ sprno = ((sprno & 0x3e0) >> 5) | ((sprno & 0x1f) << 5);
+ p = (uint32_t *)(void *)&get_spr;
+ *p = (*p & ~0x001ff800) | (sprno << 11);
+ __syncicache(get_spr, cacheline_size);
+ spr = get_spr(sprno);
+
+ db_printf("SPR %d(%x): %lx\n", saved_sprno, saved_sprno,
+ (unsigned long)spr);
+}
File Metadata
Details
Attached
Mime Type
text/plain
Expires
Sun, Feb 23, 4:43 AM (6 h, 6 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
16770898
Default Alt Text
D7403.id19255.diff (1 KB)
Attached To
Mode
D7403: Add a kdb show command to print arbitrary SPRs on PowerPC
Attached
Detach File
Event Timeline
Log In to Comment