CPU architecture:ARM920T
Recently, I was analyzing copy_from_user of ARM Linux. The main function is implemented by __arch_copy_from_user. This function is defined in the linux/arch/arm/lib/uaccess.S file and is implemented using assembly. Some source codes are as follows:
- ENTRY(__arch_copy_from_user)
- stmfd sp!, {r0, r2, r4 - r7, lr}
- cmp r2, #4
- blt .cfu_not_enough
- PLD( pld [r1, #0] ) //Because r0 and r1 will be used later, pre-read to speed up memory access
- PLD( pld [r0, #0] )
- ands ip, r0, #3
- bne .cfu_dest_not_aligned
- .cfu_dest_aligned:
- ands ip, r1, #3
- bne .cfu_src_not_aligned
- ...
- #if __LINUX_ARM_ARCH__ >= 5
- #define PLD(code...) code
- #else
- #define PLD(code...)
- #endif
Function: cache preload (PLD, PreLoad), use pld to instruct the storage system to read from the memory address specified by the following instructions. The storage system can use this method to speed up future memory access.
Format: pld[Rn,{offset}]
Where:
- Rn The base address register of the memory.
- Offset The offset added to Rn.
Previous article:Illustrated ARM Linux boot process
Next article:Detailed explanation of send and recv functions in the Linux kernel
- Popular Resources
- Popular amplifiers
- Learn ARM development(16)
- Learn ARM development(17)
- Learn ARM development(18)
- Embedded system debugging simulation tool
- A small question that has been bothering me recently has finally been solved~~
- Learn ARM development (1)
- Learn ARM development (2)
- Learn ARM development (4)
- Learn ARM development (6)
Professor at Beihang University, dedicated to promoting microcontrollers and embedded systems for over 20 years.
- LED chemical incompatibility test to see which chemicals LEDs can be used with
- Application of ARM9 hardware coprocessor on WinCE embedded motherboard
- What are the key points for selecting rotor flowmeter?
- LM317 high power charger circuit
- A brief analysis of Embest's application and development of embedded medical devices
- Single-phase RC protection circuit
- stm32 PVD programmable voltage monitor
- Introduction and measurement of edge trigger and level trigger of 51 single chip microcomputer
- Improved design of Linux system software shell protection technology
- What to do if the ABB robot protection device stops
- CGD and Qorvo to jointly revolutionize motor control solutions
- CGD and Qorvo to jointly revolutionize motor control solutions
- Keysight Technologies FieldFox handheld analyzer with VDI spread spectrum module to achieve millimeter wave analysis function
- Infineon's PASCO2V15 XENSIV PAS CO2 5V Sensor Now Available at Mouser for Accurate CO2 Level Measurement
- Advanced gameplay, Harting takes your PCB board connection to a new level!
- Advanced gameplay, Harting takes your PCB board connection to a new level!
- A new chapter in Great Wall Motors R&D: solid-state battery technology leads the future
- Naxin Micro provides full-scenario GaN driver IC solutions
- Interpreting Huawei’s new solid-state battery patent, will it challenge CATL in 2030?
- Are pure electric/plug-in hybrid vehicles going crazy? A Chinese company has launched the world's first -40℃ dischargeable hybrid battery that is not afraid of cold
- Qorvo 100 MHz Envelope Tracking Solution for 5G
- 【Beetle ESP32-C3】3. Adjust LED brightness with knob (potentiometer) (Arduino)
- China's first batch of autonomous driving unmanned commercial licenses issued! Do you dare to sit in an unmanned car? ?
- GDB debugging and DSP
- The IO pin of MSP430 is set as input, but it receives the output signal of the Hall sensor, and the chip-side signal does not switch.
- [Serial] [Starlight Lightning STM32F407 Development Board] Chapter 10 Serial Communication Experiment
- Where do errors in vector network analyzers come from?
- [Perf-V Evaluation] Environment Construction and Marquee Program Running
- The relationship between serial port communication and interruption
- How to use a wiring harness tester to measure small resistance? Here's a method