diff options
| author | 2014-04-08 19:25:03 -0400 | |
|---|---|---|
| committer | 2014-04-08 19:25:03 -0400 | |
| commit | 63e46abdb8764bc97e91bae862c8d461e61b1965 (patch) | |
| tree | e73f4aa25d7b4015a265e7bbfb6004dab7561027 /src/core/arm/interpreter/armos.h | |
| parent | fixed some license headers that I missed (diff) | |
| download | yuzu-63e46abdb8764bc97e91bae862c8d461e61b1965.tar.gz yuzu-63e46abdb8764bc97e91bae862c8d461e61b1965.tar.xz yuzu-63e46abdb8764bc97e91bae862c8d461e61b1965.zip | |
got rid of 'src' folders in each sub-project
Diffstat (limited to 'src/core/arm/interpreter/armos.h')
| -rw-r--r-- | src/core/arm/interpreter/armos.h | 138 |
1 files changed, 138 insertions, 0 deletions
diff --git a/src/core/arm/interpreter/armos.h b/src/core/arm/interpreter/armos.h new file mode 100644 index 000000000..4b58801ad --- /dev/null +++ b/src/core/arm/interpreter/armos.h | |||
| @@ -0,0 +1,138 @@ | |||
| 1 | /* armos.h -- ARMulator OS definitions: ARM6 Instruction Emulator. | ||
| 2 | Copyright (C) 1994 Advanced RISC Machines Ltd. | ||
| 3 | |||
| 4 | This program is free software; you can redistribute it and/or modify | ||
| 5 | it under the terms of the GNU General Public License as published by | ||
| 6 | the Free Software Foundation; either version 2 of the License, or | ||
| 7 | (at your option) any later version. | ||
| 8 | |||
| 9 | This program is distributed in the hope that it will be useful, | ||
| 10 | but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
| 11 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
| 12 | GNU General Public License for more details. | ||
| 13 | |||
| 14 | You should have received a copy of the GNU General Public License | ||
| 15 | along with this program; if not, write to the Free Software | ||
| 16 | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ | ||
| 17 | |||
| 18 | //#include "bank_defs.h" | ||
| 19 | //#include "dyncom/defines.h" | ||
| 20 | |||
| 21 | //typedef struct mmap_area{ | ||
| 22 | // mem_bank_t bank; | ||
| 23 | // void *mmap_addr; | ||
| 24 | // struct mmap_area *next; | ||
| 25 | //}mmap_area_t; | ||
| 26 | |||
| 27 | #if FAST_MEMORY | ||
| 28 | /* in user mode, mmap_base will be on initial brk, | ||
| 29 | set at the first mmap request */ | ||
| 30 | #define mmap_base -1 | ||
| 31 | #else | ||
| 32 | #define mmap_base 0x50000000 | ||
| 33 | #endif | ||
| 34 | static long mmap_next_base = mmap_base; | ||
| 35 | |||
| 36 | //static mmap_area_t* new_mmap_area(int sim_addr, int len); | ||
| 37 | static char mmap_mem_write(short size, int addr, uint32_t value); | ||
| 38 | static char mmap_mem_read(short size, int addr, uint32_t * value); | ||
| 39 | |||
| 40 | /***************************************************************************\ | ||
| 41 | * SWI numbers * | ||
| 42 | \***************************************************************************/ | ||
| 43 | |||
| 44 | #define SWI_Syscall 0x0 | ||
| 45 | #define SWI_Exit 0x1 | ||
| 46 | #define SWI_Read 0x3 | ||
| 47 | #define SWI_Write 0x4 | ||
| 48 | #define SWI_Open 0x5 | ||
| 49 | #define SWI_Close 0x6 | ||
| 50 | #define SWI_Seek 0x13 | ||
| 51 | #define SWI_Rename 0x26 | ||
| 52 | #define SWI_Break 0x11 | ||
| 53 | |||
| 54 | #define SWI_Times 0x2b | ||
| 55 | #define SWI_Brk 0x2d | ||
| 56 | |||
| 57 | #define SWI_Mmap 0x5a | ||
| 58 | #define SWI_Munmap 0x5b | ||
| 59 | #define SWI_Mmap2 0xc0 | ||
| 60 | |||
| 61 | #define SWI_GetUID32 0xc7 | ||
| 62 | #define SWI_GetGID32 0xc8 | ||
| 63 | #define SWI_GetEUID32 0xc9 | ||
| 64 | #define SWI_GetEGID32 0xca | ||
| 65 | |||
| 66 | #define SWI_ExitGroup 0xf8 | ||
| 67 | |||
| 68 | #if 0 | ||
| 69 | #define SWI_Time 0xd | ||
| 70 | #define SWI_Clock 0x61 | ||
| 71 | #define SWI_Time 0x63 | ||
| 72 | #define SWI_Remove 0x64 | ||
| 73 | #define SWI_Rename 0x65 | ||
| 74 | #define SWI_Flen 0x6c | ||
| 75 | #endif | ||
| 76 | |||
| 77 | #define SWI_Uname 0x7a | ||
| 78 | #define SWI_Fcntl 0xdd | ||
| 79 | #define SWI_Fstat64 0xc5 | ||
| 80 | #define SWI_Gettimeofday 0x4e | ||
| 81 | #define SWI_Set_tls 0xf0005 | ||
| 82 | |||
| 83 | #define SWI_Breakpoint 0x180000 /* see gdb's tm-arm.h */ | ||
| 84 | |||
| 85 | /***************************************************************************\ | ||
| 86 | * SWI structures * | ||
| 87 | \***************************************************************************/ | ||
| 88 | |||
| 89 | /* Arm binaries (for now) only support 32 bit, and expect to receive | ||
| 90 | 32-bit compliant structure in return of a systen call. Because | ||
| 91 | we use host system calls to emulate system calls, the returned | ||
| 92 | structure can be 32-bit compliant or 64-bit compliant, depending | ||
| 93 | on the OS running skyeye. Therefore, we need a fixed size structure | ||
| 94 | adapted to arm.*/ | ||
| 95 | |||
| 96 | /* Borrowed from qemu */ | ||
| 97 | struct target_stat64 { | ||
| 98 | unsigned short st_dev; | ||
| 99 | unsigned char __pad0[10]; | ||
| 100 | uint32_t __st_ino; | ||
| 101 | unsigned int st_mode; | ||
| 102 | unsigned int st_nlink; | ||
| 103 | uint32_t st_uid; | ||
| 104 | uint32_t st_gid; | ||
| 105 | unsigned short st_rdev; | ||
| 106 | unsigned char __pad3[10]; | ||
| 107 | unsigned char __pad31[4]; | ||
| 108 | long long st_size; | ||
| 109 | uint32_t st_blksize; | ||
| 110 | unsigned char __pad32[4]; | ||
| 111 | uint32_t st_blocks; | ||
| 112 | uint32_t __pad4; | ||
| 113 | uint32_t st32_atime; | ||
| 114 | uint32_t __pad5; | ||
| 115 | uint32_t st32_mtime; | ||
| 116 | uint32_t __pad6; | ||
| 117 | uint32_t st32_ctime; | ||
| 118 | uint32_t __pad7; | ||
| 119 | unsigned long long st_ino; | ||
| 120 | };// __attribute__((packed)); | ||
| 121 | |||
| 122 | struct target_tms32 { | ||
| 123 | uint32_t tms_utime; | ||
| 124 | uint32_t tms_stime; | ||
| 125 | uint32_t tms_cutime; | ||
| 126 | uint32_t tms_cstime; | ||
| 127 | }; | ||
| 128 | |||
| 129 | struct target_timeval32 { | ||
| 130 | uint32_t tv_sec; /* seconds */ | ||
| 131 | uint32_t tv_usec; /* microseconds */ | ||
| 132 | }; | ||
| 133 | |||
| 134 | struct target_timezone32 { | ||
| 135 | int32_t tz_minuteswest; /* minutes west of Greenwich */ | ||
| 136 | int32_t tz_dsttime; /* type of DST correction */ | ||
| 137 | }; | ||
| 138 | |||