]> git.karo-electronics.de Git - linux-beck.git/blobdiff - arch/m68k/kernel/head.S
m68k: Increase initial mapping to 8 or 16 MiB if possible
[linux-beck.git] / arch / m68k / kernel / head.S
index 15c8f55e4835900433a39bd25af3ada2d95f1143..dbb118e1a4e091985724cf27fe4e1ce1e12248a2 100644 (file)
 
 .globl kernel_pg_dir
 .globl availmem
+.globl m68k_init_mapped_size
 .globl m68k_pgtable_cachemode
 .globl m68k_supervisor_cachemode
 #ifdef CONFIG_MVME16x
@@ -907,10 +908,21 @@ L(nocon):
  *
  *     This block of code does what's necessary to map in the various kinds
  *     of machines for execution of Linux.
- *     First map the first 4 MB of kernel code & data
+ *     First map the first 4, 8, or 16 MB of kernel code & data
  */
 
-       mmu_map #PAGE_OFFSET,%pc@(L(phys_kernel_start)),#4*1024*1024,\
+       get_bi_record BI_MEMCHUNK
+       movel   %a0@(4),%d0
+       movel   #16*1024*1024,%d1
+       cmpl    %d0,%d1
+       jls     1f
+       lsrl    #1,%d1
+       cmpl    %d0,%d1
+       jls     1f
+       lsrl    #1,%d1
+1:
+       movel   %d1,m68k_init_mapped_size
+       mmu_map #PAGE_OFFSET,%pc@(L(phys_kernel_start)),%d1,\
                %pc@(m68k_supervisor_cachemode)
 
        putc    'C'
@@ -3730,6 +3742,9 @@ func_return       console_plot_pixel
 __INITDATA
        .align  4
 
+m68k_init_mapped_size:
+       .long   0
+
 #if defined(CONFIG_ATARI) || defined(CONFIG_AMIGA) || \
     defined(CONFIG_HP300) || defined(CONFIG_APOLLO)
 L(custom):