[Qemu-devel] Problems with Modifying "TranslationBlock"
Hi, everybody, I have encountered an odd problem. I want to mark the "TranslationBlock" when the code running on guest-os is a 'call' one or a 'ret' one. So I add some member variables in "TranslationBlock" of "exec-all.h". Just like the following: typedef struct TranslationBlock { target_ulong pc; /* simulated PC corresponding to this block (EIP + CS base) */ .. struct TranslationBlock *jmp_first; int is_call;// I add this if the translation block is a 'call' block int is_ret; // I add this if the translation block is a 'ret' block } Moreover, I add some codes in "Translation.c" to mark the current block 'call' or 'ret'. Although the code I add seems work well, the result is not correct. Moreover, if I add the member variables before 'pc' in TranslationBlock, qemu does not even work. So can anyone help me? Thanks a lot in advance. Kevin
Re: [Qemu-devel] Current CVS build errors on RH9
"Mulyadi Santosa" <[EMAIL PROTECTED]> wrote: /home/wine/qemu/vl.c:59:24: linux/hpet.h: No such file or directory /home/wine/qemu/vl.c: In function `hpet_start_timer': /home/wine/qemu/vl.c:1222: storage size of `info' isn't known /home/wine/qemu/vl.c:1230: `HPET_IRQFREQ' undeclared (first use in this function) Got that messages too when I try to rebuild the CVS version about 3-4 days ago on my RH9 box. IMHO the reason is: no tg_kill syscall and hpet exists on RH 9. However, I successfully build the same CVS version on FC2. The same problem exists on the RedHat RHEL 4 (deriviated from the FC 3). -- -=AV=- *** Это сообщение и любые вложения являются конфиденциальными и предназначенными исключительно для адресатов. Любое неуполномоченное использование или распространение запрещено. Сообщения могут быть изменены. Компания Orange Business Services не несёт ответственности за изменение или фальсификацию сообщений. Если Вы не являетесь получателем данного сообщения, пожалуйста сообщите об этом отправителю и удалите это сообщение. *** This message and any attachments (the "message") are confidential and intended solely for the addressees. Any unauthorised use or dissemination is prohibited. Messages are susceptible to alteration. Orange Business Services shall not be liable for the message if altered, changed or falsified. If you are not the intended addressee of this message, please cancel it immediately and inform the sender. ***
[Qemu-devel] [PATCH] Patches from PyQemu project
Please see previous message for general PyQemu project description. Here are the patches developed during the project: 1-qemu-override-mtype.patch Add -mtype command line option to let override ARM MTYPE passed to the kernel (useful for initial testing, prototyping, and debugging of new machine). 2-qemu-mplugin.patch Add -mplugin switch to allow loading of shared library and registering a machine declared in it. 3-qemu-build-so.patch Build QEMU as a shared library. 4-qemu-no-statics.patch Remove static declaration from some QEMU symbols, so they were exported from shared library. 5-qemu-gccxml-friendly.patch This is auxiliary patch to make QEMY header C++ friendly, which is required by gccxml, which in turn is required by ctypes utility h2xml to automatically generate Python interface files from C headers. 6-qemu-extra-sdstate-accessors.patch Few extra accessors for SDState structure (as was required to develop emulation of ASIC3 SD controller). Alternative approach would be to make the structure itself public. Best regards, Maria Zabolotnaya. Index: vl.c === RCS file: /sources/qemu/qemu/vl.c,v retrieving revision 1.323 diff -u -r1.323 vl.c --- vl.c 29 Jul 2007 17:57:25 - 1.323 +++ vl.c 19 Aug 2007 01:31:31 - @@ -196,6 +197,7 @@ const char *option_rom[MAX_OPTION_ROMS]; int nb_option_roms; int semihosting_enabled = 0; +int override_mtype = 0; int autostart = 1; #ifdef TARGET_ARM int old_param = 0; @@ -6590,6 +6592,9 @@ "\n" "Standard options:\n" "-M machine select emulated machine (-M ? for list)\n" +#ifdef TARGET_ARM + "-mtype machid set ARM machine type for generic machines\n" +#endif "-cpu cpuselect CPU (-cpu ? for list)\n" "-fda/-fdb file use 'file' as floppy disk 0/1 image\n" "-hda/-hdb file use 'file' as IDE hard disk 0/1 image\n" @@ -6805,6 +6811,7 @@ QEMU_OPTION_name, QEMU_OPTION_prom_env, QEMU_OPTION_old_param, +QEMU_OPTION_mtype, }; typedef struct QEMUOption { @@ -6901,6 +6909,7 @@ { "option-rom", HAS_ARG, QEMU_OPTION_option_rom }, #if defined(TARGET_ARM) || defined(TARGET_M68K) { "semihosting", 0, QEMU_OPTION_semihosting }, +{ "mtype", HAS_ARG, QEMU_OPTION_mtype }, #endif { "name", HAS_ARG, QEMU_OPTION_name }, #if defined(TARGET_SPARC) @@ -7684,6 +7694,12 @@ nb_prom_envs++; break; #endif +case QEMU_OPTION_mtype: +{ +const char *p = optarg; +override_mtype = strtol(p, (char **)&p, 0); +} +break; #ifdef TARGET_ARM case QEMU_OPTION_old_param: old_param = 1; Index: vl.h === RCS file: /sources/qemu/qemu/vl.h,v retrieving revision 1.260 diff -u -r1.260 vl.h --- vl.h 16 Aug 2007 19:56:27 - 1.260 +++ vl.h 19 Aug 2007 01:31:31 - @@ -171,6 +171,8 @@ extern const char *option_rom[MAX_OPTION_ROMS]; extern int nb_option_roms; +extern int override_mtype; + #ifdef TARGET_SPARC #define MAX_PROM_ENVS 128 extern const char *prom_envs[MAX_PROM_ENVS]; Index: hw/arm_boot.c === RCS file: /sources/qemu/qemu/hw/arm_boot.c,v retrieving revision 1.8 diff -u -r1.8 arm_boot.c --- hw/arm_boot.c 27 Jul 2007 22:08:46 - 1.8 +++ hw/arm_boot.c 19 Aug 2007 01:31:31 - @@ -169,6 +169,8 @@ env->kernel_filename = kernel_filename; env->kernel_cmdline = kernel_cmdline; env->initrd_filename = initrd_filename; +if (override_mtype) +board_id = override_mtype; env->board_id = board_id; env->loader_start = loader_start; qemu_register_reset(main_cpu_reset, env); Index: osdep.h === RCS file: /sources/qemu/qemu/osdep.h,v retrieving revision 1.10 diff -u -r1.10 osdep.h --- osdep.h 7 Jun 2007 23:09:47 - 1.10 +++ osdep.h 19 Aug 2007 01:31:30 - @@ -28,4 +28,14 @@ #define qemu_gettimeofday(tp) gettimeofday(tp, NULL); #endif /* !_WIN32 */ +#ifdef _WIN32 +#define qemu_dlopen(name, flags) LoadLibrary(name) +#define qemu_dlsym(handle, name) ((void*)GetProcAddress(handle, name)) +#define qemu_dlerror() "DLL load error" +#else +#define qemu_dlopen(name, flags) dlopen(name, flags) +#define qemu_dlsym(handle, name) dlsym(handle, name) +#define qemu_dlerror() dlerror() +#endif /* !_WIN32 */ + #endif Index: vl.c === RCS file: /sources/qemu/qemu/vl.c,v retrieving revision 1.323 diff -u -r1.323 vl.c --- vl.c 29 Jul 2007 17:57:25 - 1.323 +++ vl.c 19 Aug 2007 01:31:31 - @@ -42,6 +42,7 @@ #include #include #include +#include #ifdef _BSD #include #ifndef __APPLE__ @@ -6712,6 +6713,7 @@ #ifdef TARG
[Qemu-devel] [ANN] PyQemu 1.0 (and machine plugin patches)
Hello, My name is Maria Zabolotnaya, I am a Google Summer of Code student from Handhelds.org organization. This summer I worked on a project to create new ARM machine emulations using the Python programming language. I am glad to announce that the work is complete and results are available in the form of Python bindings for QEMU (PyQemu) and set of auxiliary patches to QEMU source code. The release 1.0 is available at this time at http://handhelds.org/~pfalcon/gsoc/ . It includes: 1. Python bindings for QEMU developed using ctypes Python module (native Python FFI (Foreign Function Interface), no C glue code is required; part of standard library since Python 2.5, available as add-on module for earlier versions). 2. Support for building QEMU as a shared library as required by ctypes to use it. 3. Patches to export more symbols and accessors from QEMU shared library. 4. Patch to allow to override ARM machine type from command line. 5. Patch to allow to load machine definitions from external shared libraries (plugins). 6. Samples of machine plugins (C). 7. Basic emulation of HTC ASIC3 peripheral controller, used in the number of Compaq/HP/HTC ARM PDAs (iPAQ h3900, iPAQ h4000, iPAQ hx4700, HTC Universal, etc.), written in Python. 8. Emulation of HP iPAQ h4000 PDA (main PDA features): screen, touchscreen, buttons, SD controller - written in Python. The archive (pyqemu-1.0.tar.gz) contains all materials above together with README describing how to make it run. For iPAQ h4000 emulation, sample kernel/userspace images are available in images-h4000.tar.bz2. This project was developed under auspices of Handhelds org to facilitate development of emulations of PDA hardware to help with kernel porting and debugging on those handhelds. I hope that it will be useful for this purpose, but its scope is wider and may interest other parties and open new uses for the QEMU emulator. I would like to thank following parties: Google, Inc.for the amazing GSoC program Handhelds.org for letting me to be a student on their behalf Paul Sokolovsky, my mentor, for guiding me through this work Andrzej Zaborowski on whose work on PXA/PDA, etc. emulation this work is largely based QEMU project for the best emulation platform ever Best regards, Maria Zabolotnaya.
Re: [Qemu-devel] sparc32 networking working?
Robert Reif schreef: I'm trying to use sparc32 on linux i686 RH9 and am unable to to get this working with current CVS. My old scripts that didn't set any networking options no longer work. When running a debian sparc netinst cd the setup finds a dhcp connection but is unable to connect to the internet. Adding -user to the command line causes it to output this: Invalid vlan (0) with no nics Adding -nic lance to the command line cause it to output this: qemu-system-sparc: invalid option -- '-nic' Any idea on what to do next. If I remember correctly, the last time I tried this (a few months ago) I was able to successfully do a debian network install. Did you try bridging to a non-virtual network? I had some problems too when I did not use an alternative network setup.
[Qemu-devel] sparc32 networking working?
I'm trying to use sparc32 on linux i686 RH9 and am unable to to get this working with current CVS. My old scripts that didn't set any networking options no longer work. When running a debian sparc netinst cd the setup finds a dhcp connection but is unable to connect to the internet. Adding -user to the command line causes it to output this: Invalid vlan (0) with no nics Adding -nic lance to the command line cause it to output this: qemu-system-sparc: invalid option -- '-nic' Any idea on what to do next. If I remember correctly, the last time I tried this (a few months ago) I was able to successfully do a debian network install.
Re: [Qemu-devel] Re: e1000 emulation
Hi Dan...! How are you doing? Okay, just a few notes: * Sorry for sending this rather badly written patch, I have loads of other stuff at the moment. I hope that it serves as a ground for further development, though. I appreciate your work here, congratulations! regards, Mulyadi
Re: [Qemu-devel] Current CVS build errors on RH9
Hi /home/wine/qemu/linux-user/syscall.c: In function `sys_tgkill': /home/wine/qemu/linux-user/syscall.c:170: `__NR_tgkill' undeclared (first use in this function) /home/wine/qemu/linux-user/syscall.c:170: (Each undeclared identifier is reported only once /home/wine/qemu/linux-user/syscall.c:170: for each function it appears in.) /home/wine/qemu/vl.c:59:24: linux/hpet.h: No such file or directory /home/wine/qemu/vl.c: In function `hpet_start_timer': /home/wine/qemu/vl.c:1222: storage size of `info' isn't known /home/wine/qemu/vl.c:1230: `HPET_IRQFREQ' undeclared (first use in this function) Got that messages too when I try to rebuild the CVS version about 3-4 days ago on my RH9 box. IMHO the reason is: no tg_kill syscall and hpet exists on RH 9. However, I successfully build the same CVS version on FC2. So, either we need to make the ./configure script detect such occassion and put the relevant ifdefs here and there, or we completely don't support those old distributions. Anybody wants to share his/her thoughts about it? regards, Mulyadi