linux/arch/s390/include/asm/setup.h
<<
>>
Prefs
   1/*
   2 *  S390 version
   3 *    Copyright IBM Corp. 1999, 2010
   4 */
   5#ifndef _ASM_S390_SETUP_H
   6#define _ASM_S390_SETUP_H
   7
   8#include <uapi/asm/setup.h>
   9
  10
  11#define PARMAREA                0x10400
  12#define MEMORY_CHUNKS           256
  13
  14#ifndef __ASSEMBLY__
  15
  16#include <asm/lowcore.h>
  17#include <asm/types.h>
  18
  19#ifndef CONFIG_64BIT
  20#define IPL_DEVICE        (*(unsigned long *)  (0x10404))
  21#define INITRD_START      (*(unsigned long *)  (0x1040C))
  22#define INITRD_SIZE       (*(unsigned long *)  (0x10414))
  23#define OLDMEM_BASE       (*(unsigned long *)  (0x1041C))
  24#define OLDMEM_SIZE       (*(unsigned long *)  (0x10424))
  25#else /* CONFIG_64BIT */
  26#define IPL_DEVICE        (*(unsigned long *)  (0x10400))
  27#define INITRD_START      (*(unsigned long *)  (0x10408))
  28#define INITRD_SIZE       (*(unsigned long *)  (0x10410))
  29#define OLDMEM_BASE       (*(unsigned long *)  (0x10418))
  30#define OLDMEM_SIZE       (*(unsigned long *)  (0x10420))
  31#endif /* CONFIG_64BIT */
  32#define COMMAND_LINE      ((char *)            (0x10480))
  33
  34#define CHUNK_READ_WRITE 0
  35#define CHUNK_READ_ONLY  1
  36
  37struct mem_chunk {
  38        unsigned long addr;
  39        unsigned long size;
  40        int type;
  41};
  42
  43extern struct mem_chunk memory_chunk[];
  44extern int memory_end_set;
  45extern unsigned long memory_end;
  46
  47void detect_memory_layout(struct mem_chunk chunk[], unsigned long maxsize);
  48void create_mem_hole(struct mem_chunk mem_chunk[], unsigned long addr,
  49                     unsigned long size);
  50
  51#define PRIMARY_SPACE_MODE      0
  52#define ACCESS_REGISTER_MODE    1
  53#define SECONDARY_SPACE_MODE    2
  54#define HOME_SPACE_MODE         3
  55
  56extern unsigned int s390_user_mode;
  57
  58/*
  59 * Machine features detected in head.S
  60 */
  61
  62#define MACHINE_FLAG_VM         (1UL << 0)
  63#define MACHINE_FLAG_IEEE       (1UL << 1)
  64#define MACHINE_FLAG_CSP        (1UL << 2)
  65#define MACHINE_FLAG_MVPG       (1UL << 3)
  66#define MACHINE_FLAG_DIAG44     (1UL << 4)
  67#define MACHINE_FLAG_IDTE       (1UL << 5)
  68#define MACHINE_FLAG_DIAG9C     (1UL << 6)
  69#define MACHINE_FLAG_MVCOS      (1UL << 7)
  70#define MACHINE_FLAG_KVM        (1UL << 8)
  71#define MACHINE_FLAG_ESOP       (1UL << 9)
  72#define MACHINE_FLAG_EDAT1      (1UL << 10)
  73#define MACHINE_FLAG_EDAT2      (1UL << 11)
  74#define MACHINE_FLAG_LPAR       (1UL << 12)
  75#define MACHINE_FLAG_LPP        (1UL << 13)
  76#define MACHINE_FLAG_TOPOLOGY   (1UL << 14)
  77#define MACHINE_FLAG_TE         (1UL << 15)
  78#define MACHINE_FLAG_RRBM       (1UL << 16)
  79
  80#define MACHINE_IS_VM           (S390_lowcore.machine_flags & MACHINE_FLAG_VM)
  81#define MACHINE_IS_KVM          (S390_lowcore.machine_flags & MACHINE_FLAG_KVM)
  82#define MACHINE_IS_LPAR         (S390_lowcore.machine_flags & MACHINE_FLAG_LPAR)
  83
  84#define MACHINE_HAS_DIAG9C      (S390_lowcore.machine_flags & MACHINE_FLAG_DIAG9C)
  85#define MACHINE_HAS_ESOP        (S390_lowcore.machine_flags & MACHINE_FLAG_ESOP)
  86#define MACHINE_HAS_PFMF        MACHINE_HAS_EDAT1
  87#define MACHINE_HAS_HPAGE       MACHINE_HAS_EDAT1
  88
  89#ifndef CONFIG_64BIT
  90#define MACHINE_HAS_IEEE        (S390_lowcore.machine_flags & MACHINE_FLAG_IEEE)
  91#define MACHINE_HAS_CSP         (S390_lowcore.machine_flags & MACHINE_FLAG_CSP)
  92#define MACHINE_HAS_IDTE        (0)
  93#define MACHINE_HAS_DIAG44      (1)
  94#define MACHINE_HAS_MVPG        (S390_lowcore.machine_flags & MACHINE_FLAG_MVPG)
  95#define MACHINE_HAS_MVCOS       (0)
  96#define MACHINE_HAS_EDAT1       (0)
  97#define MACHINE_HAS_EDAT2       (0)
  98#define MACHINE_HAS_LPP         (0)
  99#define MACHINE_HAS_TOPOLOGY    (0)
 100#define MACHINE_HAS_TE          (0)
 101#define MACHINE_HAS_RRBM        (0)
 102#else /* CONFIG_64BIT */
 103#define MACHINE_HAS_IEEE        (1)
 104#define MACHINE_HAS_CSP         (1)
 105#define MACHINE_HAS_IDTE        (S390_lowcore.machine_flags & MACHINE_FLAG_IDTE)
 106#define MACHINE_HAS_DIAG44      (S390_lowcore.machine_flags & MACHINE_FLAG_DIAG44)
 107#define MACHINE_HAS_MVPG        (1)
 108#define MACHINE_HAS_MVCOS       (S390_lowcore.machine_flags & MACHINE_FLAG_MVCOS)
 109#define MACHINE_HAS_EDAT1       (S390_lowcore.machine_flags & MACHINE_FLAG_EDAT1)
 110#define MACHINE_HAS_EDAT2       (S390_lowcore.machine_flags & MACHINE_FLAG_EDAT2)
 111#define MACHINE_HAS_LPP         (S390_lowcore.machine_flags & MACHINE_FLAG_LPP)
 112#define MACHINE_HAS_TOPOLOGY    (S390_lowcore.machine_flags & MACHINE_FLAG_TOPOLOGY)
 113#define MACHINE_HAS_TE          (S390_lowcore.machine_flags & MACHINE_FLAG_TE)
 114#define MACHINE_HAS_RRBM        (S390_lowcore.machine_flags & MACHINE_FLAG_RRBM)
 115#endif /* CONFIG_64BIT */
 116
 117#define ZFCPDUMP_HSA_SIZE       (32UL<<20)
 118#define ZFCPDUMP_HSA_SIZE_MAX   (64UL<<20)
 119
 120/*
 121 * Console mode. Override with conmode=
 122 */
 123extern unsigned int console_mode;
 124extern unsigned int console_devno;
 125extern unsigned int console_irq;
 126
 127extern char vmhalt_cmd[];
 128extern char vmpoff_cmd[];
 129
 130#define CONSOLE_IS_UNDEFINED    (console_mode == 0)
 131#define CONSOLE_IS_SCLP         (console_mode == 1)
 132#define CONSOLE_IS_3215         (console_mode == 2)
 133#define CONSOLE_IS_3270         (console_mode == 3)
 134#define SET_CONSOLE_SCLP        do { console_mode = 1; } while (0)
 135#define SET_CONSOLE_3215        do { console_mode = 2; } while (0)
 136#define SET_CONSOLE_3270        do { console_mode = 3; } while (0)
 137
 138#define NSS_NAME_SIZE   8
 139extern char kernel_nss_name[];
 140
 141#ifdef CONFIG_PFAULT
 142extern int pfault_init(void);
 143extern void pfault_fini(void);
 144#else /* CONFIG_PFAULT */
 145#define pfault_init()           ({-1;})
 146#define pfault_fini()           do { } while (0)
 147#endif /* CONFIG_PFAULT */
 148
 149extern void cmma_init(void);
 150
 151extern void (*_machine_restart)(char *command);
 152extern void (*_machine_halt)(void);
 153extern void (*_machine_power_off)(void);
 154
 155#else /* __ASSEMBLY__ */
 156
 157#ifndef CONFIG_64BIT
 158#define IPL_DEVICE        0x10404
 159#define INITRD_START      0x1040C
 160#define INITRD_SIZE       0x10414
 161#define OLDMEM_BASE       0x1041C
 162#define OLDMEM_SIZE       0x10424
 163#else /* CONFIG_64BIT */
 164#define IPL_DEVICE        0x10400
 165#define INITRD_START      0x10408
 166#define INITRD_SIZE       0x10410
 167#define OLDMEM_BASE       0x10418
 168#define OLDMEM_SIZE       0x10420
 169#endif /* CONFIG_64BIT */
 170#define COMMAND_LINE      0x10480
 171
 172#endif /* __ASSEMBLY__ */
 173#endif /* _ASM_S390_SETUP_H */
 174