From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 14526 invoked by alias); 15 Aug 2005 19:04:27 -0000 Mailing-List: contact gdb-patches-help@sources.redhat.com; run by ezmlm Precedence: bulk List-Subscribe: List-Archive: List-Post: List-Help: , Sender: gdb-patches-owner@sources.redhat.com Received: (qmail 14465 invoked by uid 22791); 15 Aug 2005 19:04:15 -0000 Received: from rproxy.gmail.com (HELO rproxy.gmail.com) (64.233.170.201) by sourceware.org (qpsmtpd/0.30-dev) with ESMTP; Mon, 15 Aug 2005 19:04:15 +0000 Received: by rproxy.gmail.com with SMTP id a36so1039064rnf for ; Mon, 15 Aug 2005 12:04:14 -0700 (PDT) Received: by 10.11.88.39 with SMTP id l39mr92074cwb; Mon, 15 Aug 2005 12:04:14 -0700 (PDT) Received: by 10.11.99.47 with HTTP; Mon, 15 Aug 2005 12:04:13 -0700 (PDT) Message-ID: <7f45d9390508151204ca0b146@mail.gmail.com> Date: Mon, 15 Aug 2005 21:19:00 -0000 From: Shaun Jackman To: gdb-patches@sources.redhat.com Subject: sim/arm/armos.c: IsTTY [PATCH] Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="----=_Part_92_20214886.1124132653973" X-SW-Source: 2005-08/txt/msg00180.txt.bz2 ------=_Part_92_20214886.1124132653973 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable Content-Disposition: inline Content-length: 3925 This patch adds support for the ARM IsTTY, Remove, and Rename SWI calls. Please cc me in your reply. Cheers, Shaun 2005-08-15 Shaun Jackman * sim/arm/armos.c (unlink): Remove this macro. It is unused in this file and conflicts with sim_callback->unlink. (SWIremove): New function. (SWIrename): Ditto. (ARMul_OSHandleSWI): Handle the RDP calls SWI_IsTTY, SWI_Remove, and SWI_Rename, as well as the RDI calls AngelSWI_Reason_IsTTY, AngelSWI_Reason_Remove, and AngelSWI_Reason_Rename. Index: sim/arm/armos.c =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /cvs/src/src/sim/arm/armos.c,v retrieving revision 1.22 diff -u -r1.22 armos.c --- sim/arm/armos.c 12 May 2005 07:36:58 -0000 1.22 +++ sim/arm/armos.c 15 Aug 2005 18:41:51 -0000 @@ -34,10 +34,6 @@ #define TARGET_O_BINARY 0 #endif =20 -#ifdef __STDC__ -#define unlink(s) remove(s) -#endif - #ifdef HAVE_UNISTD_H #include /* For SEEK_SET etc. */ #endif @@ -403,6 +399,36 @@ OSptr->ErrorNo =3D sim_callback->get_errno (sim_callback); } =20 +static void +SWIremove (ARMul_State * state, ARMword path) +{ + struct OSblock *OSptr =3D (struct OSblock *) state->OSptr; + char dummy[2000]; + int i; + + for (i =3D 0; (dummy[i] =3D ARMul_SafeReadByte (state, path + i)); i++) + ; + + state->Reg[0] =3D sim_callback->unlink (sim_callback, dummy); + OSptr->ErrorNo =3D sim_callback->get_errno (sim_callback); +} + +static void +SWIrename (ARMul_State * state, ARMword old, ARMword new) +{ + struct OSblock *OSptr =3D (struct OSblock *) state->OSptr; + char olddummy[2000], newdummy[2000]; + int i; + + for (i =3D 0; (olddummy[i] =3D ARMul_SafeReadByte (state, old + i)); i++) + ; + for (i =3D 0; (newdummy[i] =3D ARMul_SafeReadByte (state, new + i)); i++) + ; + + state->Reg[0] =3D sim_callback->rename (sim_callback, olddummy, newdummy= ); + OSptr->ErrorNo =3D sim_callback->get_errno (sim_callback); +} + /* The emulator calls this routine when a SWI instruction is encuntered. The parameter passed is the SWI number (lower 24 bits of the instruction). */ =20 @@ -544,6 +570,30 @@ state->Emulate =3D FALSE; break; =20 + case SWI_Remove: + if (swi_mask & SWI_MASK_DEMON) + SWIremove (state, state->Reg[0]); + else + unhandled =3D TRUE; + break; + + case SWI_Rename: + if (swi_mask & SWI_MASK_DEMON) + SWIrename (state, state->Reg[0], state->Reg[1]); + else + unhandled =3D TRUE; + break; + + case SWI_IsTTY: + if (swi_mask & SWI_MASK_DEMON) + { + state->Reg[0] =3D sim_callback->isatty (sim_callback, state->Reg[0]); + OSptr->ErrorNo =3D sim_callback->get_errno (sim_callback); + } + else + unhandled =3D TRUE; + break; + /* Handle Angel SWIs as well as Demon ones. */ case AngelSWI_ARM: case AngelSWI_Thumb: @@ -566,10 +616,7 @@ =20=09=20=20 /* Unimplemented reason codes. */ case AngelSWI_Reason_ReadC: - case AngelSWI_Reason_IsTTY: case AngelSWI_Reason_TmpNam: - case AngelSWI_Reason_Remove: - case AngelSWI_Reason_Rename: case AngelSWI_Reason_System: case AngelSWI_Reason_EnterSVC: default: @@ -684,6 +731,21 @@ ARMul_ReadWord (state, addr + 4), ARMul_ReadWord (state, addr + 8)); break; + + case AngelSWI_Reason_IsTTY: + state->Reg[0] =3D sim_callback->close (sim_callback, + ARMul_ReadWord (state, addr)); + OSptr->ErrorNo =3D sim_callback->get_errno (sim_callback); + break; + + case AngelSWI_Reason_Remove: + SWIremove (state, + ARMul_ReadWord (state, addr)); + + case AngelSWI_Reason_Rename: + SWIrename (state, + ARMul_ReadWord (state, addr), + ARMul_ReadWord (state, addr + 4)); } } else ------=_Part_92_20214886.1124132653973 Content-Type: text/plain; name="sim-arm-swi.diff" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="sim-arm-swi.diff" Content-length: 4897 MjAwNS0wOC0xNSAgU2hhdW4gSmFja21hbiAgPHNqYWNrbWFuQGdtYWlsLmNv bT4KCgkqIHNpbS9hcm0vYXJtb3MuYyAodW5saW5rKTogUmVtb3ZlIHRoaXMg bWFjcm8uIEl0IGlzIHVudXNlZAoJaW4gdGhpcyBmaWxlIGFuZCBjb25mbGlj dHMgd2l0aCBzaW1fY2FsbGJhY2stPnVubGluay4KCShTV0lyZW1vdmUpOiBO ZXcgZnVuY3Rpb24uCgkoU1dJcmVuYW1lKTogRGl0dG8uCgkoQVJNdWxfT1NI YW5kbGVTV0kpOiBIYW5kbGUgdGhlIFJEUCBjYWxscyBTV0lfSXNUVFksCglT V0lfUmVtb3ZlLCBhbmQgU1dJX1JlbmFtZSwgYXMgd2VsbCBhcyB0aGUgUkRJ IGNhbGxzCglBbmdlbFNXSV9SZWFzb25fSXNUVFksIEFuZ2VsU1dJX1JlYXNv bl9SZW1vdmUsIGFuZAoJQW5nZWxTV0lfUmVhc29uX1JlbmFtZS4KCkluZGV4 OiBzaW0vYXJtL2FybW9zLmMKPT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSQ1Mg ZmlsZTogL2N2cy9zcmMvc3JjL3NpbS9hcm0vYXJtb3MuYyx2CnJldHJpZXZp bmcgcmV2aXNpb24gMS4yMgpkaWZmIC11IC1yMS4yMiBhcm1vcy5jCi0tLSBz aW0vYXJtL2FybW9zLmMJMTIgTWF5IDIwMDUgMDc6MzY6NTggLTAwMDAJMS4y MgorKysgc2ltL2FybS9hcm1vcy5jCTE1IEF1ZyAyMDA1IDE4OjQxOjUxIC0w MDAwCkBAIC0zNCwxMCArMzQsNiBAQAogI2RlZmluZSBUQVJHRVRfT19CSU5B UlkgMAogI2VuZGlmCiAKLSNpZmRlZiBfX1NURENfXwotI2RlZmluZSB1bmxp bmsocykgcmVtb3ZlKHMpCi0jZW5kaWYKLQogI2lmZGVmIEhBVkVfVU5JU1RE X0gKICNpbmNsdWRlIDx1bmlzdGQuaD4JCS8qIEZvciBTRUVLX1NFVCBldGMu ICAqLwogI2VuZGlmCkBAIC00MDMsNiArMzk5LDM2IEBACiAgIE9TcHRyLT5F cnJvck5vID0gc2ltX2NhbGxiYWNrLT5nZXRfZXJybm8gKHNpbV9jYWxsYmFj ayk7CiB9CiAKK3N0YXRpYyB2b2lkCitTV0lyZW1vdmUgKEFSTXVsX1N0YXRl ICogc3RhdGUsIEFSTXdvcmQgcGF0aCkKK3sKKyAgc3RydWN0IE9TYmxvY2sg Kk9TcHRyID0gKHN0cnVjdCBPU2Jsb2NrICopIHN0YXRlLT5PU3B0cjsKKyAg Y2hhciBkdW1teVsyMDAwXTsKKyAgaW50IGk7CisKKyAgZm9yIChpID0gMDsg KGR1bW15W2ldID0gQVJNdWxfU2FmZVJlYWRCeXRlIChzdGF0ZSwgcGF0aCAr IGkpKTsgaSsrKQorICAgIDsKKworICBzdGF0ZS0+UmVnWzBdID0gc2ltX2Nh bGxiYWNrLT51bmxpbmsgKHNpbV9jYWxsYmFjaywgZHVtbXkpOworICBPU3B0 ci0+RXJyb3JObyA9IHNpbV9jYWxsYmFjay0+Z2V0X2Vycm5vIChzaW1fY2Fs bGJhY2spOworfQorCitzdGF0aWMgdm9pZAorU1dJcmVuYW1lIChBUk11bF9T dGF0ZSAqIHN0YXRlLCBBUk13b3JkIG9sZCwgQVJNd29yZCBuZXcpCit7Cisg IHN0cnVjdCBPU2Jsb2NrICpPU3B0ciA9IChzdHJ1Y3QgT1NibG9jayAqKSBz dGF0ZS0+T1NwdHI7CisgIGNoYXIgb2xkZHVtbXlbMjAwMF0sIG5ld2R1bW15 WzIwMDBdOworICBpbnQgaTsKKworICBmb3IgKGkgPSAwOyAob2xkZHVtbXlb aV0gPSBBUk11bF9TYWZlUmVhZEJ5dGUgKHN0YXRlLCBvbGQgKyBpKSk7IGkr KykKKyAgICA7CisgIGZvciAoaSA9IDA7IChuZXdkdW1teVtpXSA9IEFSTXVs X1NhZmVSZWFkQnl0ZSAoc3RhdGUsIG5ldyArIGkpKTsgaSsrKQorICAgIDsK KworICBzdGF0ZS0+UmVnWzBdID0gc2ltX2NhbGxiYWNrLT5yZW5hbWUgKHNp bV9jYWxsYmFjaywgb2xkZHVtbXksIG5ld2R1bW15KTsKKyAgT1NwdHItPkVy cm9yTm8gPSBzaW1fY2FsbGJhY2stPmdldF9lcnJubyAoc2ltX2NhbGxiYWNr KTsKK30KKwogLyogVGhlIGVtdWxhdG9yIGNhbGxzIHRoaXMgcm91dGluZSB3 aGVuIGEgU1dJIGluc3RydWN0aW9uIGlzIGVuY3VudGVyZWQuCiAgICBUaGUg cGFyYW1ldGVyIHBhc3NlZCBpcyB0aGUgU1dJIG51bWJlciAobG93ZXIgMjQg Yml0cyBvZiB0aGUgaW5zdHJ1Y3Rpb24pLiAgKi8KIApAQCAtNTQ0LDYgKzU3 MCwzMCBAQAogICAgICAgc3RhdGUtPkVtdWxhdGUgPSBGQUxTRTsKICAgICAg IGJyZWFrOwogCisgICAgY2FzZSBTV0lfUmVtb3ZlOgorICAgICAgaWYgKHN3 aV9tYXNrICYgU1dJX01BU0tfREVNT04pCisJU1dJcmVtb3ZlIChzdGF0ZSwg c3RhdGUtPlJlZ1swXSk7CisgICAgICBlbHNlCisJdW5oYW5kbGVkID0gVFJV RTsKKyAgICAgIGJyZWFrOworCisgICAgY2FzZSBTV0lfUmVuYW1lOgorICAg ICAgaWYgKHN3aV9tYXNrICYgU1dJX01BU0tfREVNT04pCisJU1dJcmVuYW1l IChzdGF0ZSwgc3RhdGUtPlJlZ1swXSwgc3RhdGUtPlJlZ1sxXSk7CisgICAg ICBlbHNlCisJdW5oYW5kbGVkID0gVFJVRTsKKyAgICAgIGJyZWFrOworCisg ICAgY2FzZSBTV0lfSXNUVFk6CisgICAgICBpZiAoc3dpX21hc2sgJiBTV0lf TUFTS19ERU1PTikKKwl7CisJICBzdGF0ZS0+UmVnWzBdID0gc2ltX2NhbGxi YWNrLT5pc2F0dHkgKHNpbV9jYWxsYmFjaywgc3RhdGUtPlJlZ1swXSk7CisJ ICBPU3B0ci0+RXJyb3JObyA9IHNpbV9jYWxsYmFjay0+Z2V0X2Vycm5vIChz aW1fY2FsbGJhY2spOworCX0KKyAgICAgIGVsc2UKKwl1bmhhbmRsZWQgPSBU UlVFOworICAgICAgYnJlYWs7CisKICAgICAgIC8qIEhhbmRsZSBBbmdlbCBT V0lzIGFzIHdlbGwgYXMgRGVtb24gb25lcy4gICovCiAgICAgY2FzZSBBbmdl bFNXSV9BUk06CiAgICAgY2FzZSBBbmdlbFNXSV9UaHVtYjoKQEAgLTU2Niwx MCArNjE2LDcgQEAKIAkgIAogCSAgICAgIC8qIFVuaW1wbGVtZW50ZWQgcmVh c29uIGNvZGVzLiAgKi8KIAkgICAgY2FzZSBBbmdlbFNXSV9SZWFzb25fUmVh ZEM6Ci0JICAgIGNhc2UgQW5nZWxTV0lfUmVhc29uX0lzVFRZOgogCSAgICBj YXNlIEFuZ2VsU1dJX1JlYXNvbl9UbXBOYW06Ci0JICAgIGNhc2UgQW5nZWxT V0lfUmVhc29uX1JlbW92ZToKLQkgICAgY2FzZSBBbmdlbFNXSV9SZWFzb25f UmVuYW1lOgogCSAgICBjYXNlIEFuZ2VsU1dJX1JlYXNvbl9TeXN0ZW06CiAJ ICAgIGNhc2UgQW5nZWxTV0lfUmVhc29uX0VudGVyU1ZDOgogCSAgICBkZWZh dWx0OgpAQCAtNjg0LDYgKzczMSwyMSBAQAogCQkJQVJNdWxfUmVhZFdvcmQg KHN0YXRlLCBhZGRyICsgNCksCiAJCQlBUk11bF9SZWFkV29yZCAoc3RhdGUs IGFkZHIgKyA4KSk7CiAJICAgICAgYnJlYWs7CisKKwkgICAgY2FzZSBBbmdl bFNXSV9SZWFzb25fSXNUVFk6CisJICAgICAgc3RhdGUtPlJlZ1swXSA9IHNp bV9jYWxsYmFjay0+Y2xvc2UgKHNpbV9jYWxsYmFjaywKKwkJCQkJCSAgIEFS TXVsX1JlYWRXb3JkIChzdGF0ZSwgYWRkcikpOworCSAgICAgIE9TcHRyLT5F cnJvck5vID0gc2ltX2NhbGxiYWNrLT5nZXRfZXJybm8gKHNpbV9jYWxsYmFj ayk7CisJICAgICAgYnJlYWs7CisKKwkgICAgY2FzZSBBbmdlbFNXSV9SZWFz b25fUmVtb3ZlOgorCSAgICAgIFNXSXJlbW92ZSAoc3RhdGUsCisJCQkgQVJN dWxfUmVhZFdvcmQgKHN0YXRlLCBhZGRyKSk7CisKKwkgICAgY2FzZSBBbmdl bFNXSV9SZWFzb25fUmVuYW1lOgorCSAgICAgIFNXSXJlbmFtZSAoc3RhdGUs CisJCQkgQVJNdWxfUmVhZFdvcmQgKHN0YXRlLCBhZGRyKSwKKwkJCSBBUk11 bF9SZWFkV29yZCAoc3RhdGUsIGFkZHIgKyA0KSk7CiAJICAgIH0KIAl9CiAg ICAgICBlbHNlCg== ------=_Part_92_20214886.1124132653973--