EXPORT_SYMBOL(acpi_os_wait_events_complete);
 
-/*
- * Deallocate the memory for a spinlock.
- */
-void acpi_os_delete_lock(acpi_spinlock handle)
-{
-       return;
-}
-
 acpi_status
 acpi_os_create_semaphore(u32 max_units, u32 initial_units, acpi_handle * handle)
 {
 }
 EXPORT_SYMBOL(acpi_resources_are_enforced);
 
+/*
+ * Create and initialize a spinlock.
+ */
+acpi_status
+acpi_os_create_lock(acpi_spinlock *out_handle)
+{
+       spinlock_t *lock;
+
+       lock = ACPI_ALLOCATE(sizeof(spinlock_t));
+       if (!lock)
+               return AE_NO_MEMORY;
+       spin_lock_init(lock);
+       *out_handle = lock;
+
+       return AE_OK;
+}
+
+/*
+ * Deallocate the memory for a spinlock.
+ */
+void acpi_os_delete_lock(acpi_spinlock handle)
+{
+       ACPI_FREE(handle);
+}
+
 /*
  * Acquire a spinlock.
  *
 
 /*
  * Spinlock primitives
  */
+acpi_status
+acpi_os_create_lock(acpi_spinlock *out_handle);
+
 void acpi_os_delete_lock(acpi_spinlock handle);
 
 acpi_cpu_flags acpi_os_acquire_lock(acpi_spinlock handle);