4:45
  *   ˆl–ß=¿JÅ!¶e8 EpÜ TÅ£Ã633_†I|¥�+ÀÈ y    /* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef __ASM_GENERIC_BITS_PER_LONG
#define __ASM_GENERIC_BITS_PER_LONG

/*
 * There seems to be no way of detecting this automatically from user
 * space, so 64 bit architectures should override this in their
 * bitsperlong.h. In particular, an architecture that supports
 * both 32 and 64 bit user space must not rely on CONFIG_64BIT
 * to decide it, but rather check a compiler provided macro.
 */
#ifndef __BITS_PER_LONG
#define __BITS_PER_LONG 32
#endif

#ifndef __BITS_PER_LONG_LONG
#define __BITS_PER_LONG_LONG 64
#endif

#endif /* __ASM_GENERIC_BITS_PER_LONG */
  +   !ˆl–Ðz¾”d*j"Tâ�nãn\ ”Å£Åƒ\k_‡I|¥ŠèªÂÊ Œ    !
                             Dvorak Layout Diagram
                                       
   By request, here's a quick typographical representation of the Dvorak
   keyboard layout. I never put this up before because when I created my
   pages all (more like "both of") the other Dvorak pages had layout
   pictures. For a prettier picture, try the Dvorak International Web
   Page or The Dvorak Keyboard by Marcos Huerta.
   
Shifted:
                      { }
   " < > P Y F G C R L ? +
    A O E U I D H T N S _
     : Q J K X B M W V Z

Lowercase:
                      [ ]
   ' , . p y f g c r l / =
    a o e u i d h t n s -
     ; q j k x b m w v z

   These are only the keys that change, plus "a" and "m", which have the
   same positions in both QWERTY and Dvorak. This particular arrangement
   is common to most Mac, DOS/Windows, and OS/2 Dvorak layouts, but it is
   not strictly ANSI standard Dvorak.
   
   ANSI places both square brackets on the same key (requiring a shift
   for one), omits curly brackets (which usually end up both on the same
   key too), and leaves the +/= key on the topmost row.

   
    Marcus Brooks -- 8 December 1996
  #   #ˆl–Ü4ý( ©³( 	Å€fàB¦-ÿÇ„¿ÃË (¬    ## SPDX-License-Identifier: GPL-2.0
####
# kbuild: Generic definitions

# Convenient variables
comma   := ,
quote   := "
squote  := '
empty   :=
space   := $(empty) $(empty)
space_escape := _-_SPACE_-_
pound := \#

###
# Comparison macros.
# Usage: $(call test-lt, $(CONFIG_LLD_VERSION), 150000)
#
# Use $(intcmp ...) if supported. (Make >= 4.4)
# Otherwise, fall back to the 'test' shell command.
ifeq ($(intcmp 1,0,,,y),y)
test-ge = $(intcmp $(strip $1)0, $(strip $2)0,,y,y)
test-gt = $(intcmp $(strip $1)0, $(strip $2)0,,,y)
else
test-ge = $(shell test $(strip $1)0 -ge $(strip $2)0 && echo y)
test-gt = $(shell test $(strip $1)0 -gt $(strip $2)0 && echo y)
endif
test-le = $(call test-ge, $2, $1)
test-lt = $(call test-gt, $2, $1)

###
# Name of target with a '.' as filename prefix. foo/bar.o => foo/.bar.o
dot-target = $(dir $@).$(notdir $@)

###
# Name of target with a '.tmp_' as filename prefix. foo/bar.o => foo/.tmp_bar.o
tmp-target = $(dir $@).tmp_$(notdir $@)

###
# The temporary file to save gcc -MMD generated dependencies must not
# contain a comma
depfile = $(subst $(comma),_,$(dot-target).d)

###
# filename of target with directory and extension stripped
basetarget = $(basename $(notdir $@))

###
# real prerequisites without phony targets
real-prereqs = $(filter-out $(PHONY), $^)

###
# Escape single quote for use in echo statements
escsq = $(subst $(squote),'\$(squote)',$1)

###
# Quote a string to pass it to C files. foo => '"foo"'
stringify = $(squote)$(quote)$1$(quote)$(squote)

###
# The path to Kbuild or Makefile. Kbuild has precedence over Makefile.
kbuild-file = $(or $(wildcard $(src)/Kbuild),$(src)/Makefile)

###
# Easy method for doing a status message
       kecho := :
 quiet_kecho := echo
silent_kecho := :
kecho := $($(quiet)kecho)

###
# filechk is used to check if the content of a generated file is updated.
# Sample usage:
#
# filechk_sample = echo $(KERNELRELEASE)
# version.h: FORCE
#	$(call filechk,sample)
#
# The rule defined shall write to stdout the content of the new file.
# The existing file will be compared with the new one.
# - If no file exist it is created
