Index: kernel/arch/sparc64/include/arch.h
===================================================================
--- kernel/arch/sparc64/include/arch.h	(revision 5d684e4c0dde4f587dd5aca281c366f71f72853b)
+++ kernel/arch/sparc64/include/arch.h	(revision 26678e5a1f0f0a6dda91a9e89a03aa3ca86e447c)
@@ -38,8 +38,8 @@
 #define KERN_sparc64_ARCH_H_
 
-#define ASI_AIUP	0x10		/** Access to primary context with user privileges. */
-#define ASI_AIUS	0x11		/** Access to secondary context with user privileges. */
-
+#define ASI_AIUP		0x10	/** Access to primary context with user privileges. */
+#define ASI_AIUS		0x11	/** Access to secondary context with user privileges. */
 #define ASI_NUCLEUS_QUAD_LDD	0x24	/** ASI for 16-byte atomic loads. */
+#define ASI_UPA_CONFIG		0x4a	/** ASI of the UPA_CONFIG register. */
 
 #define NWINDOW		8		/** Number of register window sets. */
Index: kernel/arch/sparc64/include/asm.h
===================================================================
--- kernel/arch/sparc64/include/asm.h	(revision 5d684e4c0dde4f587dd5aca281c366f71f72853b)
+++ kernel/arch/sparc64/include/asm.h	(revision 26678e5a1f0f0a6dda91a9e89a03aa3ca86e447c)
@@ -359,4 +359,13 @@
 }
 
+/** Read UPA_CONFIG register.
+ *
+ * @return Value of the UPA_CONFIG register.
+ */
+static inline uint64_t upa_config_read(void)
+{
+	return asi_u64_read(ASI_UPA_CONFIG, 0);
+}
+
 extern void cpu_halt(void);
 extern void cpu_sleep(void);
Index: kernel/arch/sparc64/include/boot/boot.h
===================================================================
--- kernel/arch/sparc64/include/boot/boot.h	(revision 5d684e4c0dde4f587dd5aca281c366f71f72853b)
+++ kernel/arch/sparc64/include/boot/boot.h	(revision 26678e5a1f0f0a6dda91a9e89a03aa3ca86e447c)
@@ -71,8 +71,4 @@
 } memmap_t;
 
-typedef struct {
-	uint32_t clock_frequency;
-} processor_t;
-
 /** Bootinfo structure.
  *
@@ -82,5 +78,4 @@
 	taskmap_t taskmap;
 	memmap_t memmap;
-	processor_t processor;
 	ballocs_t ballocs;
 	ofw_tree_node_t *ofw_root;
Index: kernel/arch/sparc64/include/register.h
===================================================================
--- kernel/arch/sparc64/include/register.h	(revision 5d684e4c0dde4f587dd5aca281c366f71f72853b)
+++ kernel/arch/sparc64/include/register.h	(revision 26678e5a1f0f0a6dda91a9e89a03aa3ca86e447c)
@@ -118,4 +118,21 @@
 typedef union fprs_reg fprs_reg_t;
 
+/** UPA_CONFIG register.
+ *
+ * Note that format of this register differs significantly from
+ * processor version to version. The format defined here
+ * is the common subset for all supported processor versions.
+ */
+union upa_config {
+	uint64_t value;
+	struct {
+		uint64_t : 34;
+		unsigned pcon : 8;	/**< Processor configuration. */
+		unsigned mid : 5;	/**< Module (processor) ID register. */
+		unsigned pcap : 17;	/**< Processor capabilities. */
+	} __attribute__ ((packed));
+};
+typedef union upa_config upa_config_t;
+
 #endif
 
