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 роки тому