Michael Brown
6abfaa153b
Towards making KEEP_IT_REAL work again.
Fix bug that caused over-allocation of .text16 and .data16 memory areas
by a factor of 16.
преди 18 години
Michael Brown
35b04b1514
Tidy up comment
преди 18 години
Michael Brown
041a04335e
Fixed assembly on old versions of gas
преди 18 години
Michael Brown
29340d7728
Documented the fact that the prefix can prot_call(main) without
worrying about its stack being destroyed during the Etherboot run.
преди 18 години
Michael Brown
89da833c5d
init_librm() and prot_call() are now real-mode far calls.
install() now calls relocate(), moves the protected-mode code to the new
location, and calls hide_etherboot().
преди 18 години
Michael Brown
02cf755f3f
Removed REAL_EXEC(); there is no longer any code using it.
преди 18 години
Michael Brown
83d80d9e79
Remove references to obsoleted REAL_CALL from documentation.
преди 18 години
Michael Brown
5080668704
Provide access to rm_cs and rm_ds from protected-mode code.
преди 18 години
Michael Brown
f7b963da51
(Redoing check-in lost by SourceForge's failure.)
Use .text16.data section with "aw" attributes, to avoid section type
conflicts when placing both code and data into .text16.
Add __from_{text16,data16}.
преди 18 години
Michael Brown
fdb983d473
Preserve the whole of %esp across prot_call(). We have to split this
between the low half stored in the static variable rm_sp, and the high
half stored on the prot_call() stack, because:
Just using the stack would screw up when a prot_call()ed routine
executes a real_call(); it would have no way to find the current top of
the RM stack.
Extending rm_sp to rm_esp would not be safe, because the guarantee that
rm_sp must return to the correct value by the time an external
real-mode call returns applies only to %sp, not to %esp.
преди 18 години
Michael Brown
c10d1aa9d7
Preserve GDT across prot_call().
преди 18 години
Michael Brown
dcc1b0054e
This line should not have been checked in
преди 18 години
Michael Brown
832807726a
Add infrastructure to support access to .data16 (and .text16) variables
from protected-mode code.
Set up %ds to point to .data16 in prot_to_real, so that code specified
via REAL_EXEC() and friends can access variables in .data16.
Move most real-mode librm variables from .text16 to .data16.
преди 18 години
Michael Brown
10c28a51bd
Create two easy-to-use entry points in libprefix: install and
install_prealloc. I *think* these will suffice for all the 16-bit
prefixes.
преди 18 години
Michael Brown
9fcded3d23
Towards a(nother) new real-mode infrastructure, in which we take
advantage of the fact that we have to have a permanently-resident block
in base memory.
преди 18 години
Michael Brown
352bf1bda2
Move init.h to gpxe/init.h.
преди 18 години
Michael Brown
4c4e4de18f
(librm_base-1b) is already an offset; no need to apply OFFSET().
Doing so, in fact, seems to expose an assembler bug; (a-b-0) is
apparently not the same as (a-b). Go figure.
преди 18 години
Michael Brown
d3dec7c331
Update to cope with changes in registers.h
преди 19 години
Michael Brown
378c1b500c
Cleaner separation of functionality between post_reloc and
initialise_via_librm.
преди 19 години
Michael Brown
34a0b5f16f
initialise() doesn't take regs
преди 19 години
Michael Brown
87508aa0b2
arch_initialise() is now sufficiently generic that we may as well just
call it initialise() and place it in main.c. :)
преди 19 години
Michael Brown
560027899e
Heading towards a sane set of control functions
преди 19 години
Michael Brown
04a99841e6
Make prot_call() able to transparently return via the newly installed copy
of librm.
преди 19 години
Michael Brown
2fa14f2f1d
lgdt needs data32 prefix, otherwise it loads only 24 bits. (sgdt
always saves 32 bits).
преди 19 години
Michael Brown
6a4ac358f3
Add INIT_FNs to make sure that librm gets reallocated when needed.
преди 19 години
Michael Brown
1f6dfd7047
Allow ourselves to be freed by basemem.c without being damaged.
преди 19 години
Michael Brown
a800e9657d
PM function called by prot_call() should be allowed to modifying
registers returned to RM code.
преди 19 години
Michael Brown
0ff80b477d
Merged mcb30-realmode-redesign back to HEAD
преди 19 години