From: Paul Bame <bame@debian.fc.hp.com>
To: parisc-linux@thepuffingroup.com
Subject: [parisc-linux]
Date: Thu, 02 Dec 1999 09:07:58 -0700 [thread overview]
Message-ID: <199912021607.JAA25205@debian.fc.hp.com> (raw)
--------
If you touch Linux code which works in real addressing mode
(initial setup, interrupts before VM is enabled, PDC/IODC) please
read 'Embedded Real-Mode Executable in vmlinux'
at http://puffin.external.hp.com/~bame/ee.html
I have this working based on an old-ish set of code and
need to update it (maybe after the 2.3 merge). IF YOU HAVE OBJECTIONS
or QUESTIONS please raise them soon.
I have attached the plusses and minuses part of the document here,
but it may not make sense out of context (or in context either :-)).
Thanks
-Paul Bame
Good Qualities
* Code which runs in real mode is quite separate from code which runs in
virtual mode. One cannot by accident mix real/virtual code or data.
This should improve maintainability and reduce surprises.
* Real-mode code for setup, interrupt handling(*), and firmware
(PDC/IODC) access, may be written in C, with no suprise failures caused
by the whims of the C compiler and linker. This should improve
maintainability too, and using C should make this code more accessable
to non-assembly code wranglers.
(*)Nitpicker note: the interrupt vector table will still probably be
written in assembly, but the code it calls can be C.
* Certain interrupt handlers may be best implemented in real mode (TLB
miss?), and this provides an obvious place and method to do so (though
needed access to the kernel page tables may recommend a virtual-mode
TLB miss handler).
* It is probably possible to eliminate some of the currently duplicated
PDC code.
* The scheme is independent of the address at which we relocate vmlinux.
This is important since there are folks who want to relocate it to
0xC000-0000, 0x8000-0000, and 0x0001-0000.
Bad Qualitites
* It's different. Today's kernel coders will not be familiar with this
scheme.
* Much of the code available to the virtual kernel, such as printk,
memcpy, and other common functions, is not available in real land
unless it is copied. This may seem pretty bad, but we're already
copying code under our current scheme (e.g., real/vsprintf.c) because
of the limitations of PC-relative branches.
* The vmlinux file is larger, since the real-mode BSS segment is fully
expanded in realmode.S.
* More thought/design is required when writing code which has both real
and virtual portions. This is probably a benefit in disguise, but it
may cause frustration during the turn-on period.
* The convert program must be updated when we switch to ELF. Since the
boot loader and the implementation of exec() will need to do the same,
I don't consider this a big deal.
* Once we convert to the embedded executable scheme, it will be
inconvenient to go back, because it will entail small but widespread
changes. This could be mitigated by using a CVS branch (and tag)
perhaps.
* The compiler's millicode library is duplicated.
next reply other threads:[~1999-12-02 16:06 UTC|newest]
Thread overview: 21+ messages / expand[flat|nested] mbox.gz Atom feed top
1999-12-02 16:07 Paul Bame [this message]
-- strict thread matches above, loose matches on Subject: below --
2000-04-10 7:32 [parisc-linux] Ingo Matthaes
2000-04-11 3:57 ` [parisc-linux] willy
2000-06-23 10:30 [parisc-linux] Huria Raja
2000-07-20 19:28 [parisc-linux] Jeff Towarnicki
[not found] <Your message of "Wed, 25 Oct 2000 14:00:42 PDT." <5.0.0.25.0.20001025135117.00a4beb0@mail.webcash.com>
2000-10-25 21:00 ` [parisc-linux] Kailashnath V Rampure
2000-10-25 21:48 ` [parisc-linux] Matthew Wilcox
[not found] ` <20001025213603.AB2E238137@carmen.fc.hp.com>
2000-10-25 22:51 ` [parisc-linux] Kailashnath V Rampure
2000-10-25 22:57 ` [parisc-linux] John David Anglin
2000-11-27 18:11 [parisc-linux] marteau
2001-01-27 0:02 [parisc-linux] Rinux-Iternet
2001-01-27 0:24 ` [parisc-linux] Josiah Carlson
2001-01-27 16:46 ` [parisc-linux] Rinux-Iternet
2001-09-28 0:46 [parisc-linux] ˲¼äÌá¸ß°Ù±¶·ÃÎÊÁ¿£¡ service@coolstarpage.com
2002-08-09 11:05 [parisc-linux] Ãâ·ÑÏÂÔØÃÜÂëר¼Ò¡¢Ìî±íÖúÊÖ£¡ÇáËÉ×¢²á¡¢ÇáËɵǽ£¡ GATOR
2002-12-28 6:01 [parisc-linux] ÄúÓвúÆ·ÐèÍÆ¹ãÂð£¬ÃÀ¶ûÍøÂçÓªÏúר¼Ò¿ÉÒÔΪÄúÌṩ×î¼ÑµÄ·þÎñ£¡ ÍÆ¹ã²úÆ·µÄ×î¼ÑÖúÊÖ
2003-01-11 20:59 ÍÆ¹ã²úÆ·µÄ×î¼Ñ°ïÊÖ£¡
2003-10-02 0:25 [parisc-linux] ×¢²áÏã¸Û¹«Ë¾ Íþ´ï¹«Ë¾
2003-10-05 5:02 Íþ´ï¹«Ë¾
2003-10-21 15:29 [parisc-linux] Ãâ·Ñ¼ÆÊýÆ÷ÉêÇ룬»¶ÓÑ¡Óà ÀËÂþʹÕß
[not found] <IUERV2$73024C16477B5B905C64A83CBA2295FA@scarlet.be>
2006-02-11 1:18 ` [parisc-linux] John David Anglin
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=199912021607.JAA25205@debian.fc.hp.com \
--to=bame@debian.fc.hp.com \
--cc=parisc-linux@thepuffingroup.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.