Tostones3 SCORE ARM

From DDCIDeos
Jump to navigationJump to search

General information about the development of SCORE ARM.

Description

Development of the SCORE ARM product. The desire is to match the functionality of the earlier Tostones SCORE PowerPC project but based on Durants.

Mulit-core kernel verification on ARM.

Milestones

High level description of the contents of the milestones.

D1

  • Partial build of SCORE components (including ada_rootlib and rts; some other libraries might not be included).
  • Compiler generating ARM code (ARM32 complying with EABI like GCC, ARMv7 or ARMv8). Some limitations may apply. No ARM specific optimizations.
  • Rudimentary bare UCC/BSP for testing.
  • Initial Deos UCC/BSP enabling user programs on Xilinx Ultrascale.
  • Some testing using the usual SCORE test suites (e.g. PlumHall, Mktest)

D2

  • Full build of all SCORE components.
  • Improved code generation.
  • Improved debug information (including DWARF sibling chains).
  • Consider support for generating Thumb instructions (which are still supported in ARMv8 32 bit mode). The low number of available registers (compared to typical RISC) will likely stress register allocation. If Thumb specific optimizations (e.g. IT blocks) can be restricted to peephole optimizing then the two instruction sets can be tabulated like RS6000/PowerPC in power installer.
  • General Deos UCC/BSP.
  • Updated SCORE documentation.
  • Tested using the usual SCORE test suites.
  • Debugger support for SCORE Ada on ARM.

Project Complete

  • Verified ARM versions of score-adaroot and score-adarts.


Status

Extend building to support ARM in general. Derive support from PowerPC.

Ada Producer

Test for "ARM" TARGET option in ada9x_options_b.ada. DONE

License check. DONE

PCR 3419 (async select regression).

Consider:

PCR 3589 (bit field related, reported by Tostones).

Only one object file per compilation units (will end ANDF-DE cross capsule references).

Ada Root Library

See SCORE-ADAROOT

Auxiliary

New set of ARM specific files. Check ppc/lib_support/asm_support/asm_macros.h - is this one or the one in rts active? DONE

Dera

PCR 4188 (general ARM installer).

Debug current regression (failure in ada_rootlib when building ppc603e, powerpc, etc). DONE

PCR 3707 (assertion in installer). Related to regression above?

Study ARM ABI details.

Generate DWARF abbreviations in each compilation/eliminate dwarf.o.

Add DWARF sibling chains. Some initial work demonstrated that this is remarkably difficult to add (as long as the DWARF contributions are generated directly to the assembler file). On the up side, GDB 10.1 is pretty happy to use SCORE's DWARF as-is.

Known outstanding:

  • Accept unsigned 64 bit hex integers. Note: This also affects PowerPC; see PCR 4242.
  • Implement PIC, primarily in arm's inst_fmt.c.
  • Use separate register numbers for single and double float registers. With this, prologue/epilogue code can determine the set of doubles to save/restore and register allocation can track singles.
  • Running out of temporary registers. Next intended fix: Make codehere.h interfaces such as reg_operand() return an indication whether the returned register (pair) is allocated to a variable - or just happens to hold the operand value and may be used also as destination.

Documentation

Update various lists of targets to include ARM (e.g. release notes).

Document ARM installer options in C/C++ User's Guide section 5.6.

Update PowerPC installer options in C/C++ User's Guide section 5.6 to list -mregnames.

Tool changes since Tostones (tool options, Ada pragmas for package System).

Unlikely that a a Configuration Guide will be created (since the UCCs will be generic Deos and a minimal bare, matching a simulator).

LibC

Incorporate some Deos ANSI code instead of print_fp.S

Add ARM specifics to src/generic/score/config.h.

ARM asm_macros.h (see Auxiliary)

PD_Tools

Building of binutils 2.30 (as used in Indie/Jupiter GNU tool chains) for ARM in place.

RTS

See SCORE-ADARTS

Adapt to Deos 9.2.3/10.x.y interfaces.

Populate a new arm_cross_bare subdirectory.

first_last/Makefile first_last/first.S first_last/last.S

hardware_exceptions/Makefile hardware_exceptions/register_offsets.c

interrupts/Makefile interrupts/pk_interrupt_handler.c

libc/longjmp TBD

machine/em_target.c based on powerpc machine/em_target.h based on powerpc machine context switch, other files TBD

Target Tools

Various small scripts to be created.

UCC

Minimal bare simulator UCC.

Generic Deos UCC.


TRAC

ARM emulator that handles ARM-v7 and possibly ARM-v8 instructions. May mean replacing SkyEye (which apparently is not maintained) with recent GDB.