• Rob Herring's avatar
    ARM: implement debug_ll_io_init() · e5c5f2ad
    Rob Herring authored
    When using DEBUG_LL, the UART's (or other HW's) registers are mapped
    into early page tables based on the results of assembly macro addruart.
    Later, when the page tables are replaced, the same virtual address must
    remain valid. Historically, this has been ensured by using defines from
    <mach/iomap.h> in both the implementation of addruart, and the machine's
    .map_io() function. However, with the move to single zImage, we wish to
    remove <mach/iomap.h>. To enable this, the macro addruart may be used
    when constructing the late page tables too; addruart is exposed as a
    C function debug_ll_addr(), and used to set up the required mapping in
    debug_ll_io_init(), which may called on an opt-in basis from a machine's
    .map_io() function.
    Signed-off-by: default avatarRob Herring <rob.herring@calxeda.com>
    [swarren: Mask map.virtual with PAGE_MASK. Checked for NULL results from
     debug_ll_addr (e.g. when selected UART isn't valid). Fixed compile when
     either !CONFIG_DEBUG_LL or CONFIG_DEBUG_SEMIHOSTING.]
    Signed-off-by: default avatarStephen Warren <swarren@nvidia.com>
    Signed-off-by: default avatarOlof Johansson <olof@lixom.net>
    e5c5f2ad
mmu.c 33.1 KB