Subversion Repositories HelenOS

Compare Revisions

Ignore whitespace Rev 413 → Rev 414

/SPARTAN/trunk/arch/ia64/include/context.h
30,6 → 30,7
#define __ia64_CONTEXT_H__
 
#include <arch/types.h>
#include <typedefs.h>
#include <align.h>
 
#define STACK_ITEM_SIZE 16
50,7 → 51,7
#define context_set(c, _pc, stack, size) \
(c)->pc = (__address) _pc; \
(c)->bsp = ((__address) stack) + ALIGN(sizeof(the_t), STACK_ALIGNMENT); \
(c)->sp = ((__address) stack) + ALIGN((size) - SP_DELTA, STACK_ALIGNMENT);
(c)->sp = ((__address) stack) + ALIGN((size), STACK_ALIGNMENT) - SP_DELTA;
 
/*
* Only save registers that must be preserved across
65,7 → 66,7
__u64 ar_unat_caller;
__u64 ar_unat_callee;
__u64 ar_rsc;
__u64 bsp; /* ar_bsp */
__address bsp; /* ar_bsp */
__u64 ar_rnat;
__u64 ar_lc;
 
77,13 → 78,13
__u64 r5;
__u64 r6;
__u64 r7;
__u64 sp; /* r12 */
__address sp; /* r12 */
__u64 r13;
/*
* Branch registers
*/
__u64 pc; /* b0 */
__address pc; /* b0 */
__u64 b1;
__u64 b2;
__u64 b3;
/SPARTAN/trunk/arch/ia64/src/context.S
28,10 → 28,10
 
.text
 
.global context_save
.global context_restore
.global context_save_arch
.global context_restore_arch
 
context_save:
context_save_arch:
alloc loc0 = ar.pfs, 1, 8, 0, 0
mov loc1 = ar.unat ;;
/* loc2 */
112,7 → 112,7
add r8 = r0, r0, 1 /* context_save returns 1 */
br.ret.sptk.many b0
 
context_restore:
context_restore_arch:
alloc loc0 = ar.pfs, 1, 8, 0, 0 ;;
 
ld8 loc0 = [in0], 8 ;; /* load ar.pfs */