Daniel Verkamp
aa28544373
[librm] Add rm stack copying functions
16 лет назад
Daniel Verkamp
2539f5fa4a
[librm] Make rm_sp and rm_ss globals again
16 лет назад
Stefan Hajnoczi
04bc50f025
[GDB] Add GDB stub for remote debugging
See http://etherboot.org/wiki/dev/gdbstub for documentation.
16 лет назад
Michael Brown
1949641d10
Fix compiler warnings that appear only on OpenBSD.
17 лет назад
Michael Brown
881dd8e102
Switch rm_ss and rm_sp back to being words; it'll make it less
confusing to read the code.
17 лет назад
Michael Brown
42d96bcb07
Don't use the "rep ss movsb" trick to copy the RM stack to the PM
stack; it breaks vmxassist.
17 лет назад
Michael Brown
0ed066bc50
rm_ss, rm_sp, and pm_esp don't need to be accessed from anywhere
outside of librm.S.
17 лет назад
Michael Brown
013d381e3c
Real-mode code might set the direction flag, which would cause carnage.
17 лет назад
Michael Brown
a9369bb503
Leave protected-mode return address on PM stack when issuing a
real_call(), rather than moving it to the RM stack and back again.
This allows the real-mode function to completely destroy the stack
contents, provided that it manages to return to real_call().
18 лет назад
Michael Brown
290c5ee779
Don't automatically call gateA20_set() when returning from a real-mode
call.
18 лет назад
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 лет назад