Changeset 12f952e5 in mainline


Ignore:
Timestamp:
2006-03-12T17:20:43Z (19 years ago)
Author:
Martin Decky <martin@…>
Branches:
lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
a82500ce
Parents:
c102a5c8
Message:

remove all OpenFirmware bindings from ppc32 kernel code
kernel now runs in real mode (ppc32)

Location:
arch/ppc32
Files:
7 edited

Legend:

Unmodified
Added
Removed
  • arch/ppc32/include/arch.h

    rc102a5c8 r12f952e5  
    3030#define __ppc32_ARCH_H__
    3131
    32 #include <genarch/ofw/ofw.h>
    33 
    3432#endif
  • arch/ppc32/include/asm/spr.h

    rc102a5c8 r12f952e5  
    3030#define __ppc32_SPR_H__
    3131
    32 #define MSR_DR (1<<27)
    33 #define MSR_IR (1<<26)
     32#define MSR_IR (1 << 4)
     33#define MSR_DR (1 << 5)
    3434
    3535#define SPRN_SRR0  0x1a
  • arch/ppc32/include/mm/memory_init.h

    rc102a5c8 r12f952e5  
    3333
    3434size_t get_memory_size(void);
    35 void preboot_read_config(void);
    3635
    3736#endif
  • arch/ppc32/src/console.c

    rc102a5c8 r12f952e5  
    2828
    2929#include <arch/console.h>
    30 #include <genarch/ofw/ofw.h>
    3130#include <console/chardev.h>
    3231#include <console/console.h>
     
    3837{
    3938        /* TODO: PCI detection etc. etc. - this is fine in PearPC for now */
    40         fb_init(0x84000000,800,600,4);
     39        fb_init(0x84000000, 800, 600, 4);
    4140}
  • arch/ppc32/src/mm/frame.c

    rc102a5c8 r12f952e5  
    3030#include <arch/mm/memory_init.h>
    3131#include <mm/frame.h>
    32 #include <genarch/ofw/memory_init.h>
    3332
    3433void frame_arch_init(void)
    3534{
    36         ofw_init_zones();
    3735        /* First is exception vector, second is 'implementation specific' */
    3836        frame_mark_unavailable(0, 2);
  • arch/ppc32/src/mm/memory_init.c

    rc102a5c8 r12f952e5  
    2828
    2929#include <arch/mm/memory_init.h>
    30 #include <genarch/ofw/memory_init.h>
    3130#include <typedefs.h>
    32 
    33 void preboot_read_config(void)
    34 {
    35         ofw_init_memmap();
    36 }
    3731
    3832size_t get_memory_size(void)
    3933{
    40         return ofw_get_memory_size();
     34        return 0;
    4135}
  • arch/ppc32/src/start.S

    rc102a5c8 r12f952e5  
    3434.global kernel_image_start
    3535
    36 .org 0x0
    37 /* 256 bytes of some data */
    38 /* exception table - must use 'ba' instructions for branches,
    39  * because it is elsewhere than the linker thinks
    40  */
    41 .space 4096
    42 
    4336kernel_image_start:
    44         /* Initialize OFW, might be needed before relocate_kernel? */
    45         lis r4, ofw@ha
    46         addi r4, r4, ofw@l
    47         stw r5, 0(r4)
    48        
    49         bl ofw_init
    50         bl preboot_read_config
    51 
    52         bl relocate_kernel
    53 __after_reloc:
    54         /* Set stack to some more meaningful value */
    55         /* TODO: This is hardcoded for PearPC, must be changed later */
    56         lis r1, 0x70
    5737        b main_bsp
    58        
    59 relocate_kernel:
    60         /* TODO: We _know_ that pearpc loads it to 8MB, and
    61          * but it should be really generic
    62          */
    63         lis r4, 0x80 /* r4 is where data was loaded - 8MB */
    64        
    65         bl to_real_mode
    66         /* Now we are in real mode, copy first block and jump to it,
    67          * we are running in the loaded kernel now
    68          * We still have in r3 physical load kernel address
    69          */
    70        
    71         b __after_reloc /* We know in pearpc we are ok, so return,
    72                          * otherwise we should relocate kernel
    73                          * here
    74                          */
    75 
    76        
    77 
    78        
    79 /* Turn off page translation
    80  * - assume that physical-loaded address is in r4
    81  */
    82 to_real_mode:
    83         mflr r0
    84        
    85         lis   r5, ktext_start@ha // Expected start of kernel
    86         addi r5, r5, ktext_start@l
    87        
    88         add  r0, r4, r0         
    89         sub  r0, r0, r5         // r0 now contains physical return address
    90        
    91         mfmsr r3
    92         andis. r3, r3, (~MSR_DR | MSR_IR) >> 16
    93         mtspr SPRN_SRR0, r0
    94         mtspr SPRN_SRR1, r3
    95         sync                    // Really needed? RFI should do it as well?
    96         RFI
    97 
Note: See TracChangeset for help on using the changeset viewer.