Changeset 5c089c3a in mainline


Ignore:
Timestamp:
2006-03-13T21:20:46Z (19 years ago)
Author:
Jakub Jermar <jakub@…>
Branches:
lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
27810c5
Parents:
631ca4d
Message:

ia64 work.
Support for SYSCALL4.
Fix user stack initial address.

Location:
arch/ia64
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • arch/ia64/include/interrupt.h

    r631ca4d r5c089c3a  
    7171        __u64 in2;
    7272        __u64 in3;
     73        __u64 in4;
    7374} __attribute__ ((packed));
    7475
  • arch/ia64/src/ia64.c

    r631ca4d r5c089c3a  
    3636#include <arch/types.h>
    3737#include <arch/context.h>
     38#include <arch/stack.h>
    3839#include <arch/mm/page.h>
    3940#include <mm/as.h>
     
    8485        rsc.mode = 3;                           /* eager mode */
    8586
    86         switch_to_userspace(entry, USTACK_ADDRESS+PAGE_SIZE-1, USTACK_ADDRESS, psr.value, rsc.value);
     87        switch_to_userspace(entry, USTACK_ADDRESS+PAGE_SIZE-ALIGN_UP(STACK_ITEM_SIZE, STACK_ALIGNMENT), USTACK_ADDRESS, psr.value, rsc.value);
    8788
    8889        while (1) {
  • arch/ia64/src/interrupt.c

    r631ca4d r5c089c3a  
    187187        }
    188188
    189         if (istate->in3 < SYSCALL_END)
    190                 return syscall_table[istate->in3](istate->in0, istate->in1, istate->in2);
     189        if (istate->in4 < SYSCALL_END)
     190                return syscall_table[istate->in4](istate->in0, istate->in1, istate->in2, istate->in3);
    191191        else
    192                 panic("Undefined syscall %d", istate->in3);
     192                panic("Undefined syscall %d", istate->in4);
    193193               
    194194        return -1;
  • arch/ia64/src/ivt.S

    r631ca4d r5c089c3a  
    3333#include <align.h>
    3434
    35 #define STACK_ITEMS             18
     35#define STACK_ITEMS             19
    3636#define STACK_FRAME_SIZE        ALIGN_UP((STACK_ITEMS*STACK_ITEM_SIZE) + STACK_SCRATCH_AREA_SIZE, STACK_ALIGNMENT)
    3737
     
    131131         * Note that p5 is a preserved predicate register and we make use of it.
    132132         */
    133        
     133
     134(p6)    st8 [r31] = r36, -8 ;;          /* save in4 */ 
    134135(p6)    st8 [r31] = r35, -8 ;;          /* save in3 */
    135136(p6)    st8 [r31] = r34, -8 ;;          /* save in2 */
    136137(p6)    st8 [r31] = r33, -8 ;;          /* save in1 */
    137138(p6)    st8 [r31] = r32, -8 ;;          /* save in0 */
    138 (p5)    add r31 = -32, r31 ;;
     139(p5)    add r31 = -40, r31 ;;
    139140   
    140141        st8 [r31] = r30, -8 ;;          /* save old stack pointer */
Note: See TracChangeset for help on using the changeset viewer.