Index: cpukit/include/rtems/score/isrlock.h
===================================================================
--- cpukit/include/rtems/score/isrlock.h	(revision 5ca8190b9603dc02e9cc22584bbceb8c0acea6ad)
+++ cpukit/include/rtems/score/isrlock.h	(revision 18d45d9d25beceedcc3e34eea3d28f87fa200e76)
@@ -198,4 +198,19 @@
 #else
   #define _ISR_lock_Destroy( _lock )
+#endif
+
+/**
+ * @brief Sets the name of an ISR lock.
+ *
+ * @param[out] _lock The ISR lock control.
+ * @param _name The name for the ISR lock.  This name must be a string
+ *   persistent throughout the life time of this lock.  The name is only used
+ *   if profiling is enabled.
+ */
+#if defined( RTEMS_SMP )
+  #define _ISR_lock_Set_name( _lock, _name ) \
+    _SMP_lock_Set_name( &( _lock )->Lock, _name )
+#else
+  #define _ISR_lock_Set_name( _lock, _name )
 #endif
 
Index: cpukit/include/rtems/score/smplock.h
===================================================================
--- cpukit/include/rtems/score/smplock.h	(revision 5ca8190b9603dc02e9cc22584bbceb8c0acea6ad)
+++ cpukit/include/rtems/score/smplock.h	(revision 18d45d9d25beceedcc3e34eea3d28f87fa200e76)
@@ -150,5 +150,5 @@
 void _SMP_lock_Initialize(
   SMP_lock_Control *lock,
-  const char *      name
+  const char       *name
 );
 #else
@@ -176,4 +176,23 @@
   _SMP_lock_Destroy_inline( lock )
 #endif
+
+/**
+ * @brief Sets the name of an SMP lock.
+ *
+ * @param[out] lock The SMP lock control.
+ * @param name The name for the SMP lock statistics.  This name must be
+ *   persistent throughout the life time of this statistics block.
+ */
+static inline void _SMP_lock_Set_name(
+  SMP_lock_Control *lock,
+  const char       *name
+)
+{
+#if defined(RTEMS_PROFILING)
+  lock->Stats.name = name;
+#else
+  (void) name;
+#endif
+}
 
 #if defined(RTEMS_DEBUG)
Index: cpukit/score/src/smp.c
===================================================================
--- cpukit/score/src/smp.c	(revision 5ca8190b9603dc02e9cc22584bbceb8c0acea6ad)
+++ cpukit/score/src/smp.c	(revision 18d45d9d25beceedcc3e34eea3d28f87fa200e76)
@@ -115,9 +115,10 @@
 
   for ( cpu_index = 0 ; cpu_index < cpu_config_max; ++cpu_index ) {
-    Per_CPU_Control *cpu = _Per_CPU_Get_by_index( cpu_index );
-
-    _ISR_lock_Initialize( &cpu->Watchdog.Lock, "Watchdog" );
+    Per_CPU_Control *cpu;
+
+    cpu = _Per_CPU_Get_by_index( cpu_index );
     _SMP_ticket_lock_Initialize( &cpu->Lock );
     _SMP_lock_Stats_initialize( &cpu->Lock_stats, "Per-CPU" );
+    _ISR_lock_Set_name( &cpu->Watchdog.Lock, "Per-CPU Watchdog" );
     _Chain_Initialize_empty( &cpu->Threads_in_need_for_help );
   }
Index: testsuites/sptests/sp37/init.c
===================================================================
--- testsuites/sptests/sp37/init.c	(revision 5ca8190b9603dc02e9cc22584bbceb8c0acea6ad)
+++ testsuites/sptests/sp37/init.c	(revision 18d45d9d25beceedcc3e34eea3d28f87fa200e76)
@@ -170,6 +170,8 @@
 static void test_isr_locks( void )
 {
+  static const char name[] = "test";
   ISR_Level normal_interrupt_level = _ISR_Get_level();
-  ISR_lock_Control initialized = ISR_LOCK_INITIALIZER("test");
+  ISR_lock_Control initialized = ISR_LOCK_INITIALIZER( name );
+  ISR_lock_Control zero_initialized;
   union {
     ISR_lock_Control lock;
@@ -178,14 +180,24 @@
   ISR_lock_Context lock_context;
   size_t i;
-  const uint8_t *initialized_bytes;
+  const uint8_t *bytes;
   ISR_Level interrupt_level;
 
   memset( &container, 0xff, sizeof( container ) );
-  _ISR_lock_Initialize( &container.lock, "test" );
-  initialized_bytes = (const uint8_t *) &initialized;
+  _ISR_lock_Initialize( &container.lock, name );
+  bytes = (const uint8_t *) &initialized;
 
   for ( i = 0; i < sizeof( container ); ++i ) {
     if ( container.bytes[ i ] != 0xff ) {
-      rtems_test_assert( container.bytes[ i ] == initialized_bytes[ i] );
+      rtems_test_assert( container.bytes[ i ] == bytes[ i ] );
+    }
+  }
+
+  memset( &zero_initialized, 0, sizeof( zero_initialized ) );
+  _ISR_lock_Set_name( &zero_initialized, name );
+  bytes = (const uint8_t *) &zero_initialized;
+
+  for ( i = 0; i < sizeof( container ); ++i ) {
+    if ( container.bytes[ i ] != 0xff ) {
+      rtems_test_assert( container.bytes[ i ] == bytes[ i ] );
     }
   }
