Questions tagged [arm64]

64-bit ARM architecture, also known as AArch64.

The AArch64 ISA was introduced in ARMv8 processors. It features a whole new instruction set, register set, and requires different development tools to the 32-bit ARM ISA.

ARMv8 processors are also capable of running AArch32 instructions (as the old 32-bit ISA is retroactively called), in both ARM and Thumb modes.

Related tags:

Usefull links:

  • ARM a64 instruction set architecture contains very detailed descriptions of each instruction available on this architecture, including encoding, pseudocode and behavior to the architectural state. This includes basic, SIMD and Floating-point instructions. Also contains common aliases.
1858 questions
0
votes
1 answer

Reading ICC_IAR1_EL1 register causes several exceptions?

I'm working on a bare-metal interrupt controller. The underlying architecture is Virt, with QEMU, and a CPU Arm Cortex-72, aarch64. As an example, I provide you an excerpt of the Makefile: run: $(MAKE) kernel.elf qemu-system-aarch64 -machine…
MM92x
  • 548
  • 1
  • 4
  • 25
0
votes
0 answers

how to make .equ directive global so that it can be used in other files?

As a toy project I'm building some project using nothing but ARM64. I have some file called pairs.s that contains an implementation for some kind of struct/class, I have an .equ directive called pairs_size that defines the size of that class, and I…
MkInitCpIO
  • 11
  • 1
0
votes
1 answer

Converting machine code snippet to assembly

I'm working on an assignment that's asking me to convert some lines of machine code to assembly. Here's an example 0x0000000080001294 : EB01001F According to some people online, this translates to CMP X0, X1 in assembly. From what I understand,…
0
votes
1 answer

linked output sections overlap in address

I have this link script test.ld : /* write for machine virt */ ENTRY(_Reset) MEMORY { rm(rx) : ORIGIN = 0x00000000, LENGTH = 0x80000 ram (rwx) : ORIGIN = 0x40000000, LENGTH = 0x40000000 } SECTIONS { . = 0x10000; .startup . : {…
Chan Kim
  • 5,177
  • 12
  • 57
  • 112
0
votes
1 answer

Arm64 - Absolute branching generating exception

Jumping to a C function using its absolute address (0x80904) in 64arm with BLR fails: LDR x3, =0x80904 SUB x0, x3, x19 BL print_x0 // Prints something to uart, i.e, x0 == x19 BLR x19 // Fails! The address is good: BLR x3 works. x19 value is not…
A F
  • 25
  • 5
0
votes
0 answers

What does a period do after the first parameter of an adr instruction in arm64 assembly?

There's this instruction I found in a source: adr x0, . And I've never seen a dot used there, it's usually an address, so what does it do?
3h6_1
  • 13
  • 1
  • 2
  • 5
0
votes
0 answers

Can't access shared memory in arm64 assembly language

I have the following routine: getSharedMemory: // x0 => digits push2 x29, x30 // push FP & LR mov x29, x0 // x29 => digits mov …
0
votes
1 answer

Why are my pointers changing? (bare metal)

I'm having a memory problem in a bare metal app. I have 2 global variables in a C file: int var = 1; int *p_var = &(var); The same file has a function (IRQ handler) where the following statements are true: var == 1 *p_var != var Desired behavior:…
A F
  • 25
  • 5
0
votes
0 answers

arm64 assembly convert int to string

I'd like to convert an integer to a string (char *) so I can print it - in pure aarch64. This is what I came up with: ; adr x20, ->result // x20 = char * ; mov x14, 0 // x14 = digit counter ; mov x15,…
user10504386
0
votes
1 answer

AArch64 - GNU ld - multiple linker scripts (for kernel and userland)

I have started a bare-metal application for AArch64. The bare-metal application should implement a simple kernel (for memory/device management and exception handling) and an userland which can made syscalls to output something over the UART via…
user10008009
0
votes
1 answer

How do I lookup a value in a table?

In Go assembly on arm64, I have created a table of values DATA table<>+0(SB)/4, 0x00000001 DATA table<>+4(SB)/4, 0x00000002 DATA table<>+8(SB)/4, 0x00000003 DATA table<>+12(SB)/4, 0x00000004 But what I want to be able to do is load up a value into…
AnthonyM
  • 1,115
  • 2
  • 10
  • 20
0
votes
1 answer

llvm/ompiler-rt sanitizer not support aarch64 ilp32: asan_interceptors_vfork.S incompatible with aarch64 ilp32

I am building libasan.so from compiler-rt(https://github.com/llvm/llvm-project), after patch the sources with https://patches.linaro.org/patch/129368/, all cpps can be built correctly. But I get blocked with an ASM (asan/asan_interceptors_vfork.S),…
Hugh
  • 11
  • 2
0
votes
0 answers

Error: static assertion failed on compiling compiler-rt ASAN runtime for aarch64_be

I am using RTOS/arm64be(GNU 7.3.0) to corss build CLANG compiler-rt ASAN runtime lib. And I get an error like this: 121 In file included from /cdev/ASAN/llvm-project/compiler-rt/lib/sanitizer_common/sanitizer_platform_limits_linux.cpp:21:0: 122…
Hugh
  • 11
  • 2
0
votes
0 answers

Trying to cross-build and package project with qemu and get a "Imported target "PkgConfig::gst" includes non-existent path" error

I have a project that I'm trying to build on an arm64 architecture. I'm on Ubuntu 18.04, so I use qemu to cross-build. I'm using the following instructions to emulate an arm64 environment : sudo apt-get install debootstrap qemu-user-static…
Tadidadou
  • 31
  • 3
0
votes
1 answer

ld error while compiling with pthread in aarch64

I am trying to compile & link a simple C++ program using threads on an aarch64 based linux host. The simple program is as follows: #include #include #include using namespace std; #define ITERATIONS 1000 // to be…
pigbabez
  • 23
  • 4
1 2 3
99
100