1. 02 12月, 2011 1 次提交
  2. 27 10月, 2011 3 次提交
  3. 21 10月, 2011 1 次提交
    • P
      linux-user: Fix broken "-version" option · 1386d4c0
      Peter Maydell 提交于
      Fix the "-version" option, which was accidentally broken in commit
      fc9c5412:
       * exit after printing version information rather than proceeding
         blithely onward (and likely printing the full usage message)
       * correct the cut-n-paste error in the usage message for it
       * don't insist on the presence of a following argument for
         options which don't take an argument (this was preventing
         'qemu-arm -version' from working)
       * remove a spurious argc check from the beginning of main() which
         meant 'QEMU_VERSION=1 qemu-arm' didn't work.
      Signed-off-by: NPeter Maydell <peter.maydell@linaro.org>
      Signed-off-by: NAndrzej Zaborowski <andrew.zaborowski@intel.com>
      1386d4c0
  4. 09 9月, 2011 5 次提交
  5. 23 8月, 2011 1 次提交
  6. 21 8月, 2011 1 次提交
  7. 05 8月, 2011 1 次提交
  8. 30 7月, 2011 1 次提交
  9. 12 7月, 2011 3 次提交
  10. 11 7月, 2011 1 次提交
  11. 29 6月, 2011 1 次提交
  12. 27 6月, 2011 1 次提交
  13. 22 6月, 2011 1 次提交
  14. 16 6月, 2011 1 次提交
  15. 01 6月, 2011 2 次提交
    • R
      target-alpha: Tidy exception constants. · 07b6c13b
      Richard Henderson 提交于
      There's no need to attempt to match EXCP_* values with PALcode entry
      point offsets.  Instead, compress all the values to make for more
      efficient switch statements within QEMU.
      
      We will be doing TLB fill within QEMU proper, not within the PALcode,
      so all of the ITB/DTB miss, double fault, and access exceptions can
      be compressed to EXCP_MMFAULT.
      
      Compress all of the EXCP_CALL_PAL exceptions into one.
      Use env->error_code to store the specific entry point.
      Signed-off-by: NRichard Henderson <rth@twiddle.net>
      07b6c13b
    • R
      target-alpha: Rationalize internal processor registers. · 129d8aa5
      Richard Henderson 提交于
      Delete all the code that tried to emulate the real IPRs of some
      unnamed CPU.  Replace those with just 3 slots that we can use to
      communicate trap information between the helper functions that
      signal exceptions and the OS trap handler.
      Signed-off-by: NRichard Henderson <rth@twiddle.net>
      129d8aa5
  16. 22 5月, 2011 1 次提交
  17. 20 5月, 2011 1 次提交
  18. 08 5月, 2011 1 次提交
  19. 13 4月, 2011 1 次提交
  20. 12 4月, 2011 1 次提交
  21. 09 2月, 2011 1 次提交
  22. 07 12月, 2010 1 次提交
  23. 03 12月, 2010 1 次提交
    • N
      linux-user: fix memory leaks with NPTL emulation · 48e15fc2
      Nathan Froyd 提交于
      Running programs that create large numbers of threads, such as this
      snippet from libstdc++'s pthread7-rope.cc:
      
        const int max_thread_count = 4;
        const int max_loop_count = 10000;
        ...
        for (int j = 0; j < max_loop_count; j++)
          {
            ...
            for (int i = 0; i < max_thread_count; i++)
      	pthread_create (&tid[i], NULL, thread_main, 0);
      
            for (int i = 0; i < max_thread_count; i++)
      	pthread_join (tid[i], NULL);
          }
      
      in user-mode emulation will quickly run out of memory.  This is caused
      by a failure to free memory in do_syscall prior to thread exit:
      
                /* TODO: Free CPU state.  */
                pthread_exit(NULL);
      
      The first step in fixing this is to make all TaskStates used by QEMU
      dynamically allocated.  The TaskState used by the initial thread was
      not, as it was allocated on main's stack.  So fix that, free the
      cpu_env, free the TaskState, and we're home free, right?
      
      Not exactly.  When we create a thread, we do:
      
              ts = qemu_mallocz(sizeof(TaskState) + NEW_STACK_SIZE);
              ...
              new_stack = ts->stack;
              ...
              ret = pthread_attr_setstack(&attr, new_stack, NEW_STACK_SIZE);
      
      If we blindly free the TaskState, then, we yank the current (host)
      thread's stack out from underneath it while it still has things to do,
      like calling pthread_exit.  That causes problems, as you might expect.
      
      The solution adopted here is to let the C library allocate the thread's
      stack (so the C library can properly clean it up at pthread_exit) and
      provide a hint that we want NEW_STACK_SIZE bytes of stack.
      
      With those two changes, we're done, right?  Well, almost.  You see,
      we're creating all these host threads and their parent threads never
      bother to check that their children are finished.  There's no good place
      for the parent threads to do so.  Therefore, we need to create the
      threads in a detached state so the parent thread doesn't have to call
      pthread_join on the child to release the child's resources; the child
      does so automatically.
      
      With those three major changes, we can comfortably run programs like the
      above without exhausting memory.  We do need to delete 'stack' from the
      TaskState structure.
      Signed-off-by: NNathan Froyd <froydnj@codesourcery.com>
      Signed-off-by: NRiku Voipio <riku.voipio@nokia.com>
      48e15fc2
  24. 06 10月, 2010 1 次提交
  25. 09 9月, 2010 1 次提交
  26. 22 7月, 2010 1 次提交
  27. 10 6月, 2010 1 次提交
  28. 09 6月, 2010 1 次提交
  29. 29 5月, 2010 2 次提交
  30. 22 5月, 2010 1 次提交