Deleted Added
sdiff udiff text old ( 4118:ddd23e5282d7 ) new ( 4188:6a9ac3b35285 )
full compact
1/*
2 * Copyright (c) 2003-2005 The Regents of The University of Michigan
3 * All rights reserved.
4 *
5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions are
7 * met: redistributions of source code must retain the above copyright
8 * notice, this list of conditions and the following disclaimer;

--- 30 unchanged lines hidden (view full) ---

39#include "kern/linux/linux.hh"
40
41#include "sim/process.hh"
42#include "sim/syscall_emul.hh"
43
44using namespace std;
45using namespace SparcISA;
46
47SyscallDesc*
48SparcLinuxProcess::getDesc(int callnum)
49{
50 if (callnum < 0 || callnum > Num_Syscall_Descs)
51 return NULL;
52 return &syscallDescs[callnum];
53}
54
55SyscallDesc*
56SparcLinuxProcess::getDesc32(int callnum)
57{
58 if (callnum < 0 || callnum > Num_Syscall32_Descs)
59 return NULL;
60 return &syscall32Descs[callnum];
61}
62
63SparcLinuxProcess::SparcLinuxProcess() :
64 Num_Syscall_Descs(284), //sizeof(syscallDescs) / sizeof(SyscallDesc)),
65 Num_Syscall32_Descs(299) //sizeof(syscall32Descs) / sizeof(SyscallDesc))
66{
67 // The sparc syscall table must be <= 284 entries because that is all there
68 // is space for.
69 assert(Num_Syscall_Descs <= 284);
70 // The sparc 32 bit syscall table bust be <= 299 entries because that is
71 // all there is space for.
72 assert(Num_Syscall_Descs <= 299);
73}
74
75Sparc32LinuxProcess::Sparc32LinuxProcess(const std::string &name,
76 ObjectFile *objFile,
77 System * system,
78 int stdin_fd,
79 int stdout_fd,
80 int stderr_fd,

--- 36 unchanged lines hidden (view full) ---

117 stdin_fd, stdout_fd, stderr_fd, argv, envp, cwd,
118 _uid, _euid, _gid, _egid, _pid, _ppid)
119{}
120
121void Sparc64LinuxProcess::handleTrap(int trapNum, ThreadContext *tc)
122{
123 switch(trapNum)
124 {
125 //case 0x10: //Linux 32 bit syscall trap
126 case 0x6d: //Linux 64 bit syscall trap
127 tc->syscall(tc->readIntReg(1));
128 break;
129 default:
130 SparcLiveProcess::handleTrap(trapNum, tc);
131 }
132}