Changeset d59718e in mainline for boot/arch


Ignore:
Timestamp:
2018-10-21T21:57:23Z (7 years ago)
Author:
Jiří Zárevúcky <zarevucky.jiri@…>
Branches:
lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
cfdeedc
Parents:
566457ad
Message:

Move stack to always be after all boot allocations

This works around an issue on pcc32.
Since this is not a proper solution and I've so far been unable
to determine root cause, I'm also opening a ticket to track it.

Location:
boot/arch/ppc32/src
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • boot/arch/ppc32/src/asm.S

    r566457ad rd59718e  
    403403        # pc = kernel's entry point (r7)
    404404        # r3 = bootinfo (physical address)
    405         # sprg0 = BOOT_OFFSET
    406405        # sprg3 = physical memory size
    407406        # sp = 0 (enforces the usage of sprg0 as exception stack)
     
    409408        mtspr srr0, r7
    410409
    411         lis r31, BOOT_OFFSET@ha
    412         addi r31, r31, BOOT_OFFSET@l
     410        # Clear sprg0. Kernel will set it.
     411        li r31, 0
    413412        mtsprg0 r31
    414413
     
    416415        # the physical memory size, get the lower 4 bytes
    417416
     417        // FIXME: unchecked magic offset
    418418        lwz r31, 4(r3)
    419419        mtsprg3 r31
  • boot/arch/ppc32/src/main.c

    r566457ad rd59718e  
    9797        size_t pages = (balloc_start + ALIGN_UP(BALLOC_MAX_SIZE, PAGE_SIZE)) >>
    9898            PAGE_WIDTH;
     99
     100        printf(" Boot allocations area: %p - %p\n", (void *) balloc_start,
     101            (void *) (pages << PAGE_WIDTH));
     102
     103        if ((pages << PAGE_WIDTH) >= (uintptr_t) loader_address_pa) {
     104                printf("Boot allocations overlap loader area.\n");
     105                printf("The boot image is too large. Halting.\n");
     106                halt();
     107        }
     108
    99109        void *transtable;
    100110        void *transtable_pa;
Note: See TracChangeset for help on using the changeset viewer.