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 년 전