mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-04-19 00:39:34 +02:00
* MIPS case node: simplified code a bit.
* Moved jump tables into data segment. For disassembly-based stack unwinding to work properly, MIPS ABI expects text segment to contain instructions only. git-svn-id: trunk@24904 -
This commit is contained in:
parent
5bcae5a80a
commit
121271c38f
@ -104,22 +104,15 @@ begin
|
||||
{ create reference }
|
||||
reference_reset_symbol(href, table, 0, sizeof(aint));
|
||||
href.offset := (-aint(min_)) * 4;
|
||||
basereg := cg.getaddressregister(current_asmdata.CurrAsmList);
|
||||
cg.a_loadaddr_ref_reg(current_asmdata.CurrAsmList, href, basereg);
|
||||
|
||||
href.base:=indexreg;
|
||||
jmpreg := cg.getaddressregister(current_asmdata.CurrAsmList);
|
||||
|
||||
reference_reset(href, sizeof(aint));
|
||||
href.index := indexreg;
|
||||
href.base := basereg;
|
||||
cg.a_load_ref_reg(current_asmdata.CurrAsmList, OS_ADDR, OS_ADDR, href, jmpreg);
|
||||
|
||||
current_asmdata.CurrAsmList.concat(taicpu.op_reg(A_JR, jmpreg));
|
||||
{ Delay slot }
|
||||
current_asmdata.CurrAsmList.concat(taicpu.op_none(A_NOP));
|
||||
{ generate jump table }
|
||||
if not(cs_opt_size in current_settings.optimizerswitches) then
|
||||
jumpSegment.concat(Tai_Align.Create_Op(4, 0));
|
||||
new_section(jumpSegment,sec_rodata,current_procinfo.procdef.mangledname,sizeof(aint));
|
||||
jumpSegment.concat(Tai_label.Create(table));
|
||||
last := min_;
|
||||
genitem(hp);
|
||||
|
Loading…
Reference in New Issue
Block a user