Subversion Repositories HelenOS-historic

Compare Revisions

Ignore whitespace Rev 198 → Rev 199

/SPARTAN/trunk/arch/ppc/include/asm/macro.h
191,7 → 191,71
#define prv 287
 
.macro REGISTERS_STORE r
stw r0, 0(\r)
stw r1, 4(\r)
stw r2, 8(\r)
stw r3, 12(\r)
stw r4, 16(\r)
stw r5, 20(\r)
stw r6, 24(\r)
stw r7, 28(\r)
stw r8, 32(\r)
stw r9, 36(\r)
stw r10, 40(\r)
stw r11, 44(\r)
stw r12, 48(\r)
stw r13, 52(\r)
stw r14, 56(\r)
stw r15, 60(\r)
stw r16, 64(\r)
stw r17, 68(\r)
stw r18, 72(\r)
stw r19, 76(\r)
stw r20, 80(\r)
stw r21, 84(\r)
stw r22, 88(\r)
stw r23, 92(\r)
stw r24, 96(\r)
stw r25, 100(\r)
stw r26, 104(\r)
stw r27, 108(\r)
stw r28, 112(\r)
stw r29, 116(\r)
stw r30, 120(\r)
stw r31, 124(\r)
.endm
 
.macro REGISTERS_LOAD r
lwz r0, 0(\r)
lwz r1, 4(\r)
lwz r2, 8(\r)
lwz r3, 12(\r)
lwz r4, 16(\r)
lwz r5, 20(\r)
lwz r6, 24(\r)
lwz r7, 28(\r)
lwz r8, 32(\r)
lwz r9, 36(\r)
lwz r10, 40(\r)
lwz r11, 44(\r)
lwz r12, 48(\r)
lwz r13, 52(\r)
lwz r14, 56(\r)
lwz r15, 60(\r)
lwz r16, 64(\r)
lwz r17, 68(\r)
lwz r18, 72(\r)
lwz r19, 76(\r)
lwz r20, 80(\r)
lwz r21, 84(\r)
lwz r22, 88(\r)
lwz r23, 92(\r)
lwz r24, 96(\r)
lwz r25, 100(\r)
lwz r26, 104(\r)
lwz r27, 108(\r)
lwz r28, 112(\r)
lwz r29, 116(\r)
lwz r30, 120(\r)
lwz r31, 124(\r)
.endm
/SPARTAN/trunk/arch/ppc/include/context.h
31,12 → 31,42
 
#include <arch/types.h>
 
#define SP_DELTA 0
#define SP_DELTA 4
 
struct context {
__u32 r0;
__u32 sp;
__u32 r2;
__u32 r3;
__u32 r4;
__u32 r5;
__u32 r6;
__u32 r7;
__u32 r8;
__u32 r9;
__u32 r10;
__u32 r11;
__u32 r12;
__u32 r13;
__u32 r14;
__u32 r15;
__u32 r16;
__u32 r17;
__u32 r18;
__u32 r19;
__u32 r20;
__u32 r21;
__u32 r22;
__u32 r23;
__u32 r24;
__u32 r25;
__u32 r26;
__u32 r27;
__u32 r28;
__u32 r29;
__u32 r30;
__u32 r31;
__u32 pc;
pri_t pri;
} __attribute__ ((packed));
 
/SPARTAN/trunk/arch/ppc/Makefile.inc
15,6 → 15,7
LFLAGS=-M -no-check-sections -T ../arch/ppc/_link.ld
 
arch_sources= \
arch/context.S \
arch/ppc.c \
arch/debug/panic.s \
arch/fpu_context.c \
/SPARTAN/trunk/arch/ppc/src/context.S
0,0 → 1,54
#
# Copyright (C) 2005 Martin Decky
# All rights reserved.
#
# Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions
# are met:
#
# - Redistributions of source code must retain the above copyright
# notice, this list of conditions and the following disclaimer.
# - Redistributions in binary form must reproduce the above copyright
# notice, this list of conditions and the following disclaimer in the
# documentation and/or other materials provided with the distribution.
# - The name of the author may not be used to endorse or promote products
# derived from this software without specific prior written permission.
#
# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
# OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
# IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
# NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
# THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
#
 
#include <arch/asm/macro.h>
 
.text
 
.global context_save
.global context_restore
 
context_save:
REGISTERS_STORE r3
mflr r3
stw r3, 128(r3)
# context_save returns 1
li r3, 1
blr
context_restore:
REGISTERS_LOAD r3
lwz r3, 128(r3)
mtlr r3
# context_restore returns 0
li r3, 0
blr
/SPARTAN/trunk/arch/ppc/src/dummy.s
28,11 → 28,10
 
.text
 
.global memcpy
.global memcopy
.global cpu_priority_read
.global memsetb
.global context_save
.global context_restore
.global userspace
.global before_thread_runs_arch
.global cpu_identify
45,11 → 44,10
.global asm_delay_loop
.global dummy
 
memcpy:
memcopy:
cpu_priority_read:
memsetb:
context_save:
context_restore:
before_thread_runs_arch:
userspace:
calibrate_delay_loop:
/SPARTAN/trunk/arch/ppc/src/start.S
35,4 → 35,22
kernel_image_start:
bl early_init
lis r3, _hardcoded_ktext_size@ha
addi r3, r3, _hardcoded_ktext_size@l
lis r4, hardcoded_ktext_size@ha
addi r4, r4, hardcoded_ktext_size@l
stw r3, 0(r4)
lis r3, _hardcoded_kdata_size@ha
addi r3, r3, _hardcoded_kdata_size@l
lis r4, hardcoded_kdata_size@ha
addi r4, r4, hardcoded_kdata_size@l
stw r3, 0(r4)
lis r3, _hardcoded_load_address@ha
addi r3, r3, _hardcoded_load_address@l
lis r4, hardcoded_load_address@ha
addi r4, r4, hardcoded_load_address@l
stw r3, 0(r4)
b main_bsp
/SPARTAN/trunk/arch/ppc/_link.ld
32,5 → 32,4
_hardcoded_ktext_size = ktext_end - ktext_start;
_hardcoded_kdata_size = kdata_end - kdata_start;
_hardcoded_load_address = 0x80000000;
 
}