Commit 7f1a8398ab447c9ba2cc0e73935d7c97d6075053
1 parent
e7b81015
removed unused code
git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@2080 c046a42c-6fe2-441c-8c8c-71466251a162
Showing
2 changed files
with
0 additions
and
273 deletions
osdep.c
| ... | ... | @@ -33,242 +33,6 @@ |
| 33 | 33 | #include "vl.h" |
| 34 | 34 | #endif |
| 35 | 35 | |
| 36 | -#if defined(__i386__) && !defined(CONFIG_SOFTMMU) && !defined(CONFIG_USER_ONLY) | |
| 37 | - | |
| 38 | -#include <sys/mman.h> | |
| 39 | -#include <sys/ipc.h> | |
| 40 | - | |
| 41 | -/* When not using soft mmu, libc independant functions are needed for | |
| 42 | - the CPU core because it needs to use alternates stacks and | |
| 43 | - libc/thread incompatibles settings */ | |
| 44 | - | |
| 45 | -#include <linux/unistd.h> | |
| 46 | - | |
| 47 | -#define QEMU_SYSCALL0(name) \ | |
| 48 | -{ \ | |
| 49 | -long __res; \ | |
| 50 | -__asm__ volatile ("int $0x80" \ | |
| 51 | - : "=a" (__res) \ | |
| 52 | - : "0" (__NR_##name)); \ | |
| 53 | -return __res; \ | |
| 54 | -} | |
| 55 | - | |
| 56 | -#define QEMU_SYSCALL1(name,arg1) \ | |
| 57 | -{ \ | |
| 58 | -long __res; \ | |
| 59 | -__asm__ volatile ("int $0x80" \ | |
| 60 | - : "=a" (__res) \ | |
| 61 | - : "0" (__NR_##name),"b" ((long)(arg1))); \ | |
| 62 | -return __res; \ | |
| 63 | -} | |
| 64 | - | |
| 65 | -#define QEMU_SYSCALL2(name,arg1,arg2) \ | |
| 66 | -{ \ | |
| 67 | -long __res; \ | |
| 68 | -__asm__ volatile ("int $0x80" \ | |
| 69 | - : "=a" (__res) \ | |
| 70 | - : "0" (__NR_##name),"b" ((long)(arg1)),"c" ((long)(arg2))); \ | |
| 71 | -return __res; \ | |
| 72 | -} | |
| 73 | - | |
| 74 | -#define QEMU_SYSCALL3(name,arg1,arg2,arg3) \ | |
| 75 | -{ \ | |
| 76 | -long __res; \ | |
| 77 | -__asm__ volatile ("int $0x80" \ | |
| 78 | - : "=a" (__res) \ | |
| 79 | - : "0" (__NR_##name),"b" ((long)(arg1)),"c" ((long)(arg2)), \ | |
| 80 | - "d" ((long)(arg3))); \ | |
| 81 | -return __res; \ | |
| 82 | -} | |
| 83 | - | |
| 84 | -#define QEMU_SYSCALL4(name,arg1,arg2,arg3,arg4) \ | |
| 85 | -{ \ | |
| 86 | -long __res; \ | |
| 87 | -__asm__ volatile ("int $0x80" \ | |
| 88 | - : "=a" (__res) \ | |
| 89 | - : "0" (__NR_##name),"b" ((long)(arg1)),"c" ((long)(arg2)), \ | |
| 90 | - "d" ((long)(arg3)),"S" ((long)(arg4))); \ | |
| 91 | -return __res; \ | |
| 92 | -} | |
| 93 | - | |
| 94 | -#define QEMU_SYSCALL5(name,arg1,arg2,arg3,arg4,arg5) \ | |
| 95 | -{ \ | |
| 96 | -long __res; \ | |
| 97 | -__asm__ volatile ("int $0x80" \ | |
| 98 | - : "=a" (__res) \ | |
| 99 | - : "0" (__NR_##name),"b" ((long)(arg1)),"c" ((long)(arg2)), \ | |
| 100 | - "d" ((long)(arg3)),"S" ((long)(arg4)),"D" ((long)(arg5))); \ | |
| 101 | -return __res; \ | |
| 102 | -} | |
| 103 | - | |
| 104 | -#define QEMU_SYSCALL6(name,arg1,arg2,arg3,arg4,arg5,arg6) \ | |
| 105 | -{ \ | |
| 106 | -long __res; \ | |
| 107 | -__asm__ volatile ("push %%ebp ; movl %%eax,%%ebp ; movl %1,%%eax ; int $0x80 ; pop %%ebp" \ | |
| 108 | - : "=a" (__res) \ | |
| 109 | - : "i" (__NR_##name),"b" ((long)(arg1)),"c" ((long)(arg2)), \ | |
| 110 | - "d" ((long)(arg3)),"S" ((long)(arg4)),"D" ((long)(arg5)), \ | |
| 111 | - "0" ((long)(arg6))); \ | |
| 112 | -return __res; \ | |
| 113 | -} | |
| 114 | - | |
| 115 | -/****************************************************************/ | |
| 116 | -/* shmat replacement */ | |
| 117 | - | |
| 118 | -int qemu_ipc(int call, unsigned long first, | |
| 119 | - unsigned long second, unsigned long third, | |
| 120 | - void *ptr, unsigned long fifth) | |
| 121 | -{ | |
| 122 | - QEMU_SYSCALL6(ipc, call, first, second, third, ptr, fifth); | |
| 123 | -} | |
| 124 | - | |
| 125 | -#define SHMAT 21 | |
| 126 | - | |
| 127 | -/* we must define shmat so that a specific address will be used when | |
| 128 | - mapping the X11 ximage */ | |
| 129 | -void *shmat(int shmid, const void *shmaddr, int shmflg) | |
| 130 | -{ | |
| 131 | - void *ptr; | |
| 132 | - int ret; | |
| 133 | - /* we give an address in the right memory area */ | |
| 134 | - if (!shmaddr) | |
| 135 | - shmaddr = get_mmap_addr(8192 * 1024); | |
| 136 | - ret = qemu_ipc(SHMAT, shmid, shmflg, (unsigned long)&ptr, (void *)shmaddr, 0); | |
| 137 | - if (ret < 0) | |
| 138 | - return NULL; | |
| 139 | - return ptr; | |
| 140 | -} | |
| 141 | - | |
| 142 | -/****************************************************************/ | |
| 143 | -/* sigaction bypassing the threads */ | |
| 144 | - | |
| 145 | -static int kernel_sigaction(int signum, const struct qemu_sigaction *act, | |
| 146 | - struct qemu_sigaction *oldact, | |
| 147 | - int sigsetsize) | |
| 148 | -{ | |
| 149 | - QEMU_SYSCALL4(rt_sigaction, signum, act, oldact, sigsetsize); | |
| 150 | -} | |
| 151 | - | |
| 152 | -int qemu_sigaction(int signum, const struct qemu_sigaction *act, | |
| 153 | - struct qemu_sigaction *oldact) | |
| 154 | -{ | |
| 155 | - return kernel_sigaction(signum, act, oldact, 8); | |
| 156 | -} | |
| 157 | - | |
| 158 | -/****************************************************************/ | |
| 159 | -/* memory allocation */ | |
| 160 | - | |
| 161 | -//#define DEBUG_MALLOC | |
| 162 | - | |
| 163 | -#define MALLOC_BASE 0xab000000 | |
| 164 | -#define PHYS_RAM_BASE 0xac000000 | |
| 165 | - | |
| 166 | -#define MALLOC_ALIGN 16 | |
| 167 | -#define BLOCK_HEADER_SIZE 16 | |
| 168 | - | |
| 169 | -typedef struct MemoryBlock { | |
| 170 | - struct MemoryBlock *next; | |
| 171 | - unsigned long size; /* size of block, including header */ | |
| 172 | -} MemoryBlock; | |
| 173 | - | |
| 174 | -static MemoryBlock *first_free_block; | |
| 175 | -static unsigned long malloc_addr = MALLOC_BASE; | |
| 176 | - | |
| 177 | -static void *malloc_get_space(size_t size) | |
| 178 | -{ | |
| 179 | - void *ptr; | |
| 180 | - size = TARGET_PAGE_ALIGN(size); | |
| 181 | - ptr = mmap((void *)malloc_addr, size, | |
| 182 | - PROT_WRITE | PROT_READ, | |
| 183 | - MAP_PRIVATE | MAP_FIXED | MAP_ANON, -1, 0); | |
| 184 | - if (ptr == MAP_FAILED) | |
| 185 | - return NULL; | |
| 186 | - malloc_addr += size; | |
| 187 | - return ptr; | |
| 188 | -} | |
| 189 | - | |
| 190 | -void *qemu_malloc(size_t size) | |
| 191 | -{ | |
| 192 | - MemoryBlock *mb, *mb1, **pmb; | |
| 193 | - void *ptr; | |
| 194 | - size_t size1, area_size; | |
| 195 | - | |
| 196 | - if (size == 0) | |
| 197 | - return NULL; | |
| 198 | - | |
| 199 | - size = (size + BLOCK_HEADER_SIZE + MALLOC_ALIGN - 1) & ~(MALLOC_ALIGN - 1); | |
| 200 | - pmb = &first_free_block; | |
| 201 | - for(;;) { | |
| 202 | - mb = *pmb; | |
| 203 | - if (mb == NULL) | |
| 204 | - break; | |
| 205 | - if (size <= mb->size) | |
| 206 | - goto found; | |
| 207 | - pmb = &mb->next; | |
| 208 | - } | |
| 209 | - /* no big enough blocks found: get new space */ | |
| 210 | - area_size = TARGET_PAGE_ALIGN(size); | |
| 211 | - mb = malloc_get_space(area_size); | |
| 212 | - if (!mb) | |
| 213 | - return NULL; | |
| 214 | - size1 = area_size - size; | |
| 215 | - if (size1 > 0) { | |
| 216 | - /* create a new free block */ | |
| 217 | - mb1 = (MemoryBlock *)((uint8_t *)mb + size); | |
| 218 | - mb1->next = NULL; | |
| 219 | - mb1->size = size1; | |
| 220 | - *pmb = mb1; | |
| 221 | - } | |
| 222 | - goto the_end; | |
| 223 | - found: | |
| 224 | - /* a free block was found: use it */ | |
| 225 | - size1 = mb->size - size; | |
| 226 | - if (size1 > 0) { | |
| 227 | - /* create a new free block */ | |
| 228 | - mb1 = (MemoryBlock *)((uint8_t *)mb + size); | |
| 229 | - mb1->next = mb->next; | |
| 230 | - mb1->size = size1; | |
| 231 | - *pmb = mb1; | |
| 232 | - } else { | |
| 233 | - /* suppress the first block */ | |
| 234 | - *pmb = mb->next; | |
| 235 | - } | |
| 236 | - the_end: | |
| 237 | - mb->size = size; | |
| 238 | - mb->next = NULL; | |
| 239 | - ptr = ((uint8_t *)mb + BLOCK_HEADER_SIZE); | |
| 240 | -#ifdef DEBUG_MALLOC | |
| 241 | - qemu_printf("malloc: size=0x%x ptr=0x%lx\n", size, (unsigned long)ptr); | |
| 242 | -#endif | |
| 243 | - return ptr; | |
| 244 | -} | |
| 245 | - | |
| 246 | -void qemu_free(void *ptr) | |
| 247 | -{ | |
| 248 | - MemoryBlock *mb; | |
| 249 | - | |
| 250 | - if (!ptr) | |
| 251 | - return; | |
| 252 | - mb = (MemoryBlock *)((uint8_t *)ptr - BLOCK_HEADER_SIZE); | |
| 253 | - mb->next = first_free_block; | |
| 254 | - first_free_block = mb; | |
| 255 | -} | |
| 256 | - | |
| 257 | -/****************************************************************/ | |
| 258 | -/* virtual memory allocation */ | |
| 259 | - | |
| 260 | -unsigned long mmap_addr = PHYS_RAM_BASE; | |
| 261 | - | |
| 262 | -void *get_mmap_addr(unsigned long size) | |
| 263 | -{ | |
| 264 | - unsigned long addr; | |
| 265 | - addr = mmap_addr; | |
| 266 | - mmap_addr += ((size + 4095) & ~4095) + 4096; | |
| 267 | - return (void *)addr; | |
| 268 | -} | |
| 269 | - | |
| 270 | -#else | |
| 271 | - | |
| 272 | 36 | #ifdef _WIN32 |
| 273 | 37 | #include <windows.h> |
| 274 | 38 | #elif defined(_BSD) |
| ... | ... | @@ -424,8 +188,6 @@ void qemu_vfree(void *ptr) |
| 424 | 188 | |
| 425 | 189 | #endif |
| 426 | 190 | |
| 427 | -#endif | |
| 428 | - | |
| 429 | 191 | void *qemu_mallocz(size_t size) |
| 430 | 192 | { |
| 431 | 193 | void *ptr; | ... | ... |
osdep.h
| ... | ... | @@ -15,39 +15,4 @@ void qemu_vfree(void *ptr); |
| 15 | 15 | |
| 16 | 16 | void *get_mmap_addr(unsigned long size); |
| 17 | 17 | |
| 18 | -/* specific kludges for OS compatibility (should be moved elsewhere) */ | |
| 19 | -#if defined(__i386__) && !defined(CONFIG_SOFTMMU) && !defined(CONFIG_USER_ONLY) | |
| 20 | - | |
| 21 | -/* disabled pthread version of longjmp which prevent us from using an | |
| 22 | - alternative signal stack */ | |
| 23 | -extern void __longjmp(jmp_buf env, int val); | |
| 24 | -#define longjmp __longjmp | |
| 25 | - | |
| 26 | -#include <signal.h> | |
| 27 | - | |
| 28 | -struct siginfo; | |
| 29 | - | |
| 30 | -/* NOTE: it works only because the glibc sigset_t is >= kernel sigset_t */ | |
| 31 | -struct qemu_sigaction { | |
| 32 | - union { | |
| 33 | - void (*_sa_handler)(int); | |
| 34 | - void (*_sa_sigaction)(int, struct siginfo *, void *); | |
| 35 | - } _u; | |
| 36 | - unsigned long sa_flags; | |
| 37 | - void (*sa_restorer)(void); | |
| 38 | - sigset_t sa_mask; /* mask last for extensibility */ | |
| 39 | -}; | |
| 40 | - | |
| 41 | -int qemu_sigaction(int signum, const struct qemu_sigaction *act, | |
| 42 | - struct qemu_sigaction *oldact); | |
| 43 | - | |
| 44 | -#undef sigaction | |
| 45 | -#undef sa_handler | |
| 46 | -#undef sa_sigaction | |
| 47 | -#define sigaction qemu_sigaction | |
| 48 | -#define sa_handler _u._sa_handler | |
| 49 | -#define sa_sigaction _u._sa_sigaction | |
| 50 | - | |
| 51 | -#endif | |
| 52 | - | |
| 53 | 18 | #endif | ... | ... |