From mboxrd@z Thu Jan 1 00:00:00 1970 From: mjn3@codepoet.org (Manuel Novoa III) Subject: additional 700 byte reduction in drivers/char Date: Tue, 18 Jun 2002 22:01:16 -0600 Sender: linux-8086-owner@vger.kernel.org Message-ID: <20020619040116.GA24965@codepoet.org> Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="pWyiEgJYm5f9v55/" Return-path: Content-Disposition: inline List-Id: To: linux-8086@vger.kernel.org --pWyiEgJYm5f9v55/ Content-Type: text/plain; charset=us-ascii Content-Disposition: inline Hello again, I had some time this evening so I did a quick pass through arch/i86/drivers/char. These changes aren't as well tested as the previous ones, if at all. Same configuration as before. cvs source (with fs/minix/bitmap.c fix): Root device is (0, 0) Boot sector 512 bytes. Setup is 1772 bytes. System is 120672 B (61456 B code, 7940 B data and 51276d B bss) System is 69428 previously patched version Root device is (0, 0) Boot sector 512 bytes. Setup is 1772 bytes. System is 118380 B (59472 B code, 7640 B data and 51268d B bss) System is 67144 previously patched version with arch/i86/driver/char patch (attached) Root device is (0, 0) Boot sector 512 bytes. Setup is 1772 bytes. System is 117544 B (58704 B code, 7572 B data and 51268d B bss) System is 66308 Manuel --pWyiEgJYm5f9v55/ Content-Type: application/octet-stream Content-Disposition: attachment; filename="elks.diff2-mjn3.gz" Content-Transfer-Encoding: base64 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 QN2gynMMG5Zcyio5uiuOz5f/AbKYl+r6kQAA --pWyiEgJYm5f9v55/--