cregit-Linux how code gets into the kernel

Release 4.14 arch/alpha/lib/dec_and_lock.c

Directory: arch/alpha/lib
// SPDX-License-Identifier: GPL-2.0
/*
 * arch/alpha/lib/dec_and_lock.c
 *
 * ll/sc version of atomic_dec_and_lock()
 * 
 */

#include <linux/spinlock.h>
#include <linux/atomic.h>
#include <linux/export.h>

  asm (".text                                     \n\
        .global _atomic_dec_and_lock            \n\
        .ent _atomic_dec_and_lock               \n\
        .align  4                               \n\
_atomic_dec_and_lock:                           \n\
        .prologue 0                             \n\
1:      ldl_l   $1, 0($16)                      \n\
        subl    $1, 1, $1                       \n\
        beq     $1, 2f                          \n\
        stl_c   $1, 0($16)                      \n\
        beq     $1, 4f                          \n\
        mb                                      \n\
        clr     $0                              \n\
        ret                                     \n\
2:      br      $29, 3f                         \n\
3:      ldgp    $29, 0($29)                     \n\
        br      $atomic_dec_and_lock_1..ng      \n\
        .subsection 2                           \n\
4:      br      1b                              \n\
        .previous                               \n\
        .end _atomic_dec_and_lock");


static int __used atomic_dec_and_lock_1(atomic_t *atomic, spinlock_t *lock) { /* Slow path */ spin_lock(lock); if (atomic_dec_and_test(atomic)) return 1; spin_unlock(lock); return 0; }

Contributors

PersonTokensPropCommitsCommitProp
Linus Torvalds3384.62%133.33%
Richard Henderson512.82%133.33%
Adrian Bunk12.56%133.33%
Total39100.00%3100.00%

EXPORT_SYMBOL(_atomic_dec_and_lock);

Overall Contributors

PersonTokensPropCommitsCommitProp
Linus Torvalds4071.43%228.57%
Al Viro814.29%114.29%
Richard Henderson58.93%114.29%
Adrian Bunk11.79%114.29%
Greg Kroah-Hartman11.79%114.29%
Arun Sharma11.79%114.29%
Total56100.00%7100.00%
Directory: arch/alpha/lib
Information contained on this website is for historical information purposes only and does not indicate or represent copyright ownership.
Created with cregit.